質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.51%
LINE Messaging API

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

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Q&A

2回答

925閲覧

LINEのオウム返しbotが返事をくれない

退会済みユーザー

退会済みユーザー

総合スコア0

LINE Messaging API

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

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

0グッド

1クリップ

投稿2019/01/14 07:48

前提・実現したいこと

Google Apps ScriptとMessaging APIを使用してLINEのオウム返しbotを作成したいです。
ユーザからメッセージを送ったら同じ内容を返信するというものです。

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

botへメッセージを送ってもリプライしてくれません。(既読は付きます。)
一旦doPostからリプライの処理へ繋げず、イベントを受け取ったら単純に「doPost」と
スプレッドシートに出力するようにしてみましたが、
そもそもWebhookからPostを受け取れていないのか、「doPost」が出力されません。

同様にdoGet()が実行されたら「doGet」とスプレッドシートに出力するようにしており、
そちらはうまく動いています。
(ゲストブラウザからGASのウェブアプリケーション公開用URLへアクセスして確認しました。)
また、bot側からメッセージを送信する(push)こともできています。

このあとどうやって原因を探っていけばよいか、みなさんのお知恵をお貸しください。

該当のソースコード

GoogleAppsScript

1function doPost(e) { 2 var json = JSON.parse(e.postData.contents); 3 SpreadSheetApp.openById(SHEET_ID).getSheetByName('log').appendRow(["doPost"]); // 出力されない 4} 5 6function doGet(e) { 7 SpreadsheetApp.openById(SHEET_ID).getSheetByName('log').appendRow(["doGet"]); // 出力できる 8 return ContentService.createTextOutput("SUCCESS"); 9}

試したこと

  • Webhook URL→毎回GASのプロジェクトバージョンを新規作成した上でURLを設定し直しています。
  • LINE Developer管理画面上のWebhook接続確認ボタン→「成功しました」と表示されます。
  • GASの公開設定→アプリケーションにアクセスできるユーザーを「全員(匿名ユーザを含む)」に設定しています。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2019/01/14 09:38

http://www.apirequest.io/ このサイトからgasに向けて適当なpost送ったらスプレッドシートに書き込まれますか?
退会済みユーザー

退会済みユーザー

2019/01/14 09:39

あと、lineの設定で「webhook送信」が「利用する」になってます?
guest

回答2

0

私も同じような状態でした。
GASのプロジェクト バージョンでNEWを選択せず、1を選択して更新していたんですが、
NEWを選択しないといけないみたいですね。
スクリプトが更新されていなかったみたいでNEWにしたら動作しました。

投稿2019/02/25 01:38

igaiga

総合スコア144

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

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

0

このあとどうやって原因を探っていけばよいか、みなさんのお知恵をお貸しください。

についての回答です。

質問に記載なさった内容が全て事実だとすれば、↓のe.postData.contentsの参照に誤りがあることが考えられると思います(ドキュメントに従っておられるでしょうから可能性は低いと思いますが、postDataではなく、postにしないといけないとか)。

javascript

1var json = JSON.parse(e.postData.contents);

いずれにしてもdogetで検証済みで、gas側が大きく間違っていないなら、受信とその内容の検証のために
doPostの先頭で、イベントパラメータeを、例えば自身のメールに送信するなどして、確認なさることで探っていけるのではないかと考えました。

投稿2019/01/15 01:14

papinianus

総合スコア12705

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.51%

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

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

質問する

関連した質問