本件についてご教示をお願いしたく質問いたします。
GASを利用してLINEでおうむ返しの返信ができるLINEボットを作成しています。
しかし、以下のコードを書いてもLINEには既読がつくだけで返信が来ません。
【確認済事項】
・LINEのアクセストークンは誤差なくコピペ済
・webhookのURLも誤差なくコピペ済、LINE Developersサイトで接続も成功している旨確認済
・GASでログを確認したところ、doPostでエラーが出ています。
・こちらのサイト'LINEボット作成方法の記事'に書いてあるコードをコピペのため、コード自体に誤差は生まれない想定。
・上記サイトのコードから、""と''が混在していたため、''に統一し直すも、エラーが発生。(doPostで失敗すると出ます。)
・エラーメッセージの詳細ですが、GASの各関数のステータスが見れるページでdoPostの関数で「失敗しました」と言うステータスが反映されているのみです。それ以上の確認ができません。
・回答いただいたご指摘で「myFunctionを消して、その中身だけにする」のもしましたが、やはり同様のエラー(doPostの「失敗しました」と言うステータス反映)が出るのみで改善ならず。
・GASではトリガーとしてどの関数を使うか設定する必要があると聞き、doPostを選択するも、やはり同様のエラー(doPostの「失敗しました」と言うステータス反映)が出るのみで改善ならず。
念のためエラーメッセージ画面についても添付します。
doPostでエラーとあり、'contents'に問題があるようですが、その上に記載あるようにdoPostのウェブアプリの方で「失敗しました」と続いており、doPost自体に問題があるのが、他のLINE設定に問題があるのか全く分かりません。
お手数をおかけしますが、どうかご教示のほどお願いいたします。
なお、コードの画面は次の通りです。※LINEのアクセストークンは消して撮影してます。
【追記事項(追加確認事項)】
・UrlFetchApp を使うことを承認していなかった可能性を踏まえ、GASのメニューの「ファイル」->「プロジェクトのプロパティ」を選び、「スコープ」タブに「https://www.googleapis.com/auth/script.external_request」があるか確認。
→上記があることを確認。※詳細画面は以下↓
・さらにGASのメニューの「表示」->「マニフェストファイル表示」を選び、「appsscript.json」の内容も確認。
appsscript.json に "oauthScopes" が設定されている場合は、自動的に承認ポップアップは出ないらしいので、承認できていなかった可能性あるが、特に設定されていなかったため、問題はないように見える。
※詳細画面は以下↓
・また、Googleより本ソースコードのエラーについてメールで報告が来たのでこちらに掲載します。
やはり承認されていないことがエラーとなっているようですが、トリガー欄の「time-based」については全く覚えがないもので不明です。
※詳細画面は以下↓
詳細のコードは以下。
function myFunction() { //コード.gs // line developersに書いてあるChannel Access Token var channel_access_token = '****' /** * reply_tokenを使ってreplyする */ function reply(data) { var url = 'https://api.line.me/v2/bot/message/reply'; var headers = { 'Content-Type' : 'application/json; charset=UTF-8', 'Authorization': 'Bearer ' + channel_access_token, }; var postData = { 'replyToken' : data.events[0].replyToken, 'messages' : [ { 'type':'text', 'text':data.events[0].message.text, } ] }; var options = { 'method' : 'post', 'headers' : headers, 'payload' : JSON.stringify(postData) }; return UrlFetchApp.fetch(url, options); } /** * postされたときの処理 */ function doPost(e) { var json = JSON.parse(e.postData.contents); reply(json); }}
回答1件
あなたの回答
tips
プレビュー