【GAS】トークを送信できているが、エラーが表示される。
GASにてメッセージを送ろうとしています。送信はできるのですが、エラーが返ってきます。
どのように対処するばよいでしょうか?
---------------------------------------------------
SyntaxError: Unexpected end of JSON input
---------------------------------------------------
---------------------------------------------------
function send_message() {
const token = getAccessToken(getEnv_(),"bot")
const getID = get_ID()
const uri = getID.BASE_API_URL + "/bots/" + getID.bot_id + "/users/" + getID.user_id + "/messages"
const payload = {
"content": {
"type": "text",
"text": "test"
}
}
const headers = {
'Content-Type' : 'application/json',
'Authorization': 'Bearer ' + token.access_token
}
const options = {
'method': 'post',
'headers': headers,
'payload': JSON.stringify(payload)
}
try {
const res = JSON.parse(UrlFetchApp.fetch(uri, options).getContentText('UTF-8'))
Logger.log('Success:')
return res.returnValue
} catch(e) {
Logger.log('Error:')
Logger.log(e)
}
}
投稿に新しいコメントが追加されましたら通知を送信します。
コメント4
업데이트 된 답글입니다.
佐藤正宗
どのようにしてどんなエラーが出ているのかちょっとわかりにくいので、詳細を書いてもらえますでしょうか。
この記事はToken取得するための記事なので、Botを動かしてみたいならこちらの記事を参考にしてくださいませ。
https://qiita.com/kunihiros/items/caac7a00a6cd745fff1c
2022.07.08
업데이트 된 답글입니다.
motu12345 投稿者
JWTの内容を参考にライブラリを使用せず、JWT Tokenを取得しています。
-------------------------------------------------
function test(){
const token = getAccessToken(getEnv_(),"bot")
Logger.log(token.access_token)
}
function getJwt(ENV){
const header = Utilities.base64Encode(JSON.stringify({"alg":"RS256","typ":"JWT"}), Utilities.Charset.UTF_8)
const claimSet = JSON.stringify({
"iss": ENV.CLIENT_ID,
"sub": ENV.SERVICE_ACCOUNT,
"iat": Math.floor(Date.now() / 1000),
"exp": Math.floor(Date.now() / 1000 + 2000)
})
const encodeText = header + "." + Utilities.base64Encode(claimSet, Utilities.Charset.UTF_8)
const signature = Utilities.computeRsaSha256Signature(encodeText, ENV.PRIVATE_KEY)
return encodeText + "." + Utilities.base64Encode(signature)
}
function getAccessToken(ENV, scopes) {
const uri = "https://auth.worksmobile.com/oauth2/v2.0/token"
const payload = {
"assertion" : getJwt(ENV),
"grant_type" : encodeURIComponent("urn:ietf:params:oauth:grant-type:jwt-bearer"),
"client_id": ENV.CLIENT_ID,
"client_secret": ENV.CLIENT_SECRET,
"scope": scopes
}
const options = {
"method": "post",
"headers": {"Content-Type" : "application/x-www-form-urlencoded"},
"payload": payload
}
return JSON.parse(UrlFetchApp.fetch(uri, options))
}
2022.07.08
업데이트 된 답글입니다.
佐藤正宗
私のメッセージ送信のコード、晒しておきますね。
```
function userMessageSend(ENV, text) {
const token = getAccessToken(ENV, "bot").access_token
const uri = "https://www.worksapis.com/v1.0/bots/" + ENV.BOT_ID + "/users/" + ENV.userId + "/messages"
const json = {
"content": { "type": "text", "text": text }
}
const options = {
"method": "POST",
"headers": {
"Content-Type": "application/json",
"Authorization": "Bearer " + token
},
"payload": JSON.stringify(json)
}
return UrlFetchApp.fetch(uri, options)
}
```
2022.07.08
업데이트 된 답글입니다.
motu12345 投稿者
参考にさせていただいたら、エラー回避できました。
2022.07.08
まだ、解決できませんか?
今すぐ実際に使用しているLINE WORKSユーザーに質問してみましょう。