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

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

詳細はこちら
LINE Messaging API

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

Google Apps Script

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

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

Q&A

解決済

1回答

2165閲覧

LINE BotとGASの連携後のデバック、テスト方法

kotaro_nagano

総合スコア11

LINE Messaging API

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

Google Apps Script

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

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

0グッド

0クリップ

投稿2019/09/12 04:50

編集2019/09/12 05:40

オウム返しの機能を作ろうとして、いくつかのサイトを参考にして下記のコードを作成したのですが、LINE Messageing APIでWebHookの設定にWebアプリ化したGASのURLを貼り付け接続確認が可能になってメッセージを飛ばしたのですが、返答がありませんでした。

とりあえずコピペして動いたらそこから直そうとしていたので、原因を調べる為にデバックをしようとしたのですが、
どのようにデバックすればいいかわからずに困っています。

function reply(e) { var channel_access_token = "<アクセストークン>"; var message = { "replyToken" : e.replyToken, "messages" : [ { "type" : "text", "text" : ((e.message.type=="text") ? e.message.text : "Text以外は返せません・・・") } ] }; var sheet = SpreadsheetApp.getActiveSheet(); sheet.getRange(1, 1).setValue(e.message.text) var replyData = { "method" : "post", "headers" : { "Content-Type" : "application/json", "Authorization" : "Bearer " + channel_access_token, }, "payload" : JSON.stringify(message) }; addLog(replyData); var response = UrlFetchApp.fetch("https://api.line.me/v2/bot/message/reply", replyData); return response.getResponseCode(); }

GASのみでデバックできる方法があれば教えてください。

POSTMANでGASのWebアプリ化したURLをPOSTしてテストしようと思ったのですが、パラメータのreplyTokenがわからずデバックできませんでした。

追記

すみません。自分の質問内容が悪く、うまく伝わっていなかったです。
今回のデバッグ方法とは、皆さんはどうメッセージを関数側(GAS側)に渡しているのか? (直接LINEBOTにメッセージを送って、POSTMANを叩いて、別変数で値を整形してから渡す等) が知りたかったです。

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

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

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

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

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

guest

回答1

0

ベストアンサー

addLog(replyData)のaddLogって何ですか?以前にこれのせいで動いてないやつをみたことがあるんですが、消しても動きませんか?

デバッグするならstackdriverですかね。

投稿2019/09/12 05:15

papinianus

総合スコア12705

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

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

kotaro_nagano

2019/09/12 05:31

回答ありがとうございます! addLog消してしっかりプロジェクトバージョンをNewで更新しても変化がないですね。
kotaro_nagano

2019/09/12 05:31

デバッグ方法教えていただきありがとうございます! 記事見てみます!
kotaro_nagano

2019/09/12 05:39

すみません。自分の質問内容が悪く、うまく伝わっていなかったです。 今回のデバッグ方法とは、皆さんはどうメッセージを関数側(GAS側)に渡しているのか?(直接LINEBOTにメッセージを送って、POSTMANを叩いて、別変数で値を整形してから渡す等)が知りたかったです。 あとで追記しておきます。
papinianus

2019/09/12 05:55

書いておられるとおりreplytokenはLineからもらうしか方法がないです。 (そこを作り出せたら、返信と称して任意の人にメッセージ送れますよね?) replyトークンが分からない前提だとpushをするしかなくて https://qiita.com/n_oshiumi/items/a1a02e03093825f41e01 pushとreplyだとそもそもAPIのアクセス先から違いますので、デバッグの目的にあうのか疑問です。 POSTMANからいくら送れたとしても、LINEから送られて受信したものがどういうパラメータかわからなければ無意味なんで、大筋として、console.logで内容を拾って、LINEに送信せずにエラーがないことを動作確認して、LINEから受けとれるよう公開しなおす、というデバッグは避けられないと思いますが。
papinianus

2019/09/12 05:58

gasでやるくらいなんでそういうことはしないと思いますが、受信するだけの中間サーバをたてて、そこでパラメータを確認して、すぐに(おそらくトークンは短かい時間でタイムアウトするはず)POSTMANでパラメータ組んで送信する、ということをすればおっしゃっていることをそのまま実行することも可能だと思いますよ。 現在の問題は、自分で管理できないサービスから管理できないサービスにデータが流れてるんで、中間者をたてる、ということです。でもそれができるくらいなら、gasみたいな不便な環境を使う必要がないですよね。
papinianus

2019/09/12 06:00

単にテストするだけなら、Linemessaging api のドキュメントみればどういうパラメータが渡ってくるか書いてます。それでgasのコードでobject をリテラルに組めばいいです。なぜPOSTMANの出番はないです。 今回はreplyTokenとメッセージくらいしか使ってないので、パラメータのせいってことはないでしょう。
kotaro_nagano

2019/09/12 07:26

詳しい回答ありがとうございました。 簡易的に作れるという事だったので、GAS採用したのですが、これならNodeやらGoでやったほうが良さそうですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問