🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
LINE Messaging API

LINE Messaging APIは、メッセージの送信・返信ができるAPIです。Web APIを経由しアプリケーションサーバとLINEのAPIでやり取りが可能。複数のメッセージタイプや分かりやすいAPIリファレンスを持ち、グループチャットにも対応しています。

Q&A

1回答

775閲覧

LINEbotでおみくじ

217ext

総合スコア0

LINE Messaging API

LINE Messaging APIは、メッセージの送信・返信ができるAPIです。Web APIを経由しアプリケーションサーバとLINEのAPIでやり取りが可能。複数のメッセージタイプや分かりやすいAPIリファレンスを持ち、グループチャットにも対応しています。

0グッド

0クリップ

投稿2020/12/27 03:42

編集2020/12/27 04:43

前提・実現したいこと

LINEbotでおみくじ こちらのサイト( http://gilmon.hatenablog.com/entry/2017/01/04/224827 )を参考にLINEbotでおみくじに挑戦してみたのですが、
GASのほうで「TypeError: Cannot read property 'postData' of undefined doPost @ コード.gs:6 」というエラーがでます。

スクリプトの 「 var events = JSON.parse(e.postData.contents).events;」 この部分がエラーになるみたいです。

記事が3年前なのもあり情報が古いのか、なにか変更間違えているのかどうすればいいのかわかりません。 記事のスクリプトの中で変更したのは、各種画像のURLと一番最初のChannel Access Tokenだけです。ほかにも変更する場所があるのでしょうか。 有識者の方、お力を貸していただけませんか。 よろしくお願いします。

###コード####

// LINE Developers の Channel Access Tokenを設定 var channel_access_token = "トークン"; // LINEから呼ばれる関数 function doPost(e) { var events = JSON.parse(e.postData.contents).events; events.forEach(function(event) { if(event.type == "message"){ lineReply(event); } }); } // LINEへの返信 function lineReply(e) { var repMes = replyMessage(e); var postData = { "replyToken" : e.replyToken, "messages" : repMes }; var options = { "method" : "post", "headers" : { "Content-Type" : "application/json", "Authorization" : "Bearer " + channel_access_token }, "payload" : JSON.stringify(postData) }; UrlFetchApp.fetch("https://api.line.me/v2/bot/message/reply", options); } //返信する画像を準備 function replyMessage(e) { if(e.message.text=="おみくじ"){ var rand = Math.floor( Math.random() * 4 ) +1; var imageurl; switch (rand) { case 1: //大吉 imageurl="画像" break; case 2: //中吉 imageurl="画像" break; case 3: //吉 imageurl="画像" break; case 4: //小吉 imageurl="画像" break; } var repMes=[ { "type" : "image", "originalContentUrl" : imageurl, "previewImageUrl" : imageurl } ]; return(repMes) } };

発生している問題・エラーメッセージ

エラーメッセージ TypeError: Cannot read property 'postData' of undefined doPost @ コード.gs:6 ### 該当のソースコード var events = JSON.parse(e.postData.contents).events; ### 試したこと そのままコピぺで実行、""を付ける等

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

217ext

2020/12/27 04:03

すみません!Yahooの方消しました!
draq

2020/12/27 15:20

LINE はあんまり関係なくて、GAS の問題のように思います。GAS をウォッチしている人がすべて LINE Messaging API もウォッチしてるとは限らないので、「Google Apps Script」 タグも付けておいた方が回答が付きやすいでしょう。
guest

回答1

0

TypeError: Cannot read property 'postData' of undefined

これは、undefinedpostDataプロパティを読めなかった、という意味のエラーで今回のケースでは、

var events = JSON.parse(e.postData.contents).events;

eundefined になっているということです。

原因としては doPostを Web のエディタ画面から直接実行しているケースが最初に思いつきます。
もしそうなら LINE チャネルの Webhook の設定をしたら、LINE アプリから(公式チャネルを友達登録してから)メッセージ投稿してみてください。

投稿2020/12/27 15:36

draq

総合スコア2577

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問