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

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

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

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

Google Apps Script

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

Q&A

解決済

2回答

2118閲覧

LINE botからのデータ取得してスプレッドシートに書込み

python_heroku

総合スコア22

LINE Messaging API

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

Google Apps Script

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

1グッド

0クリップ

投稿2021/04/30 02:21

LINE botを利用してグループ内に投稿されたコメントをスプレッドシートにどんどんと書き込もうと思っていますが、そもそもLINE botを利用しておうむ返しすることが上手く出来ません。。

最終的にはLINEに対する返信は無しにしようと思っていますが、テスト用に正しくデータ取得できているか確認のため、LINEに返す部分も現在作成してます。

LINE botに関してはこちらの記事を参考に記載しました。
https://arukayies.com/gas/line_bot/line-bot-with-gas

トリガーログを見ている限りdoPostで失敗しています。
色々と調べて以下は問題ないことを確認しました。

  • Who has acsess to the appの項目をAnyone, even anonymousに設定
  • デプロイ時に新規作成を選択
  • Official Account Managerからデフォルトの応答メッセージをオフに設定
  • LINE Developers側でWebhookの接続確認を行うと「✔︎成功しました」となります
  • Web hocksをOFFとON繰り返し

ちょっと詰まっており、ご助言頂きたいです。

GAS

1const token = “hogehoge” 2 3// メッセージ取得処理 4function doPost(e) { 5 // レスポンス取得 6 const responseLine = e.postData.getDataAsString(); 7 // JSON形式に変換 8 const responseLineJson = JOSN.parse(responseLine).events[0]; 9 // 応答用トークン取得 10 const replyToken = responseLineJson.replyToken; 11 12 // メッセージデータの場合、次処理へ 13 if (responseLineJson.type == 'message') { 14 messageController(responseLineJson, replyToken); 15 insert_ss(responseLineJson); 16 } 17 18} 19 20// メッセージ変換処理 21function messageController(event, replyToken) { 22 // メッセージ取得 23 const message = event.message; 24 // 本文取得 25 const text = message.text; 26 27 // SSに記載 28 insert_ss(text) 29 30 // 返信処理 31 if (text.indexOf('テスト') > -1) { 32 // LINEのメッセージ形式へ 33 let LineMessageObject = [{ 34 'type': 'text', 35 'text': 'てすとぉー' 36 }]; 37 38 // LINEに返信 39 relpyLine(LineMessageObject, replyToken) 40 } 41} 42 43// LINEへの応答処理 44function replyLine(LineMessageObject, replyToken) { 45 const replyHeaders = { 46 'Content-Type': 'application/json', 47 'Authorization': 'Bearer ' + token 48 }; 49 const replyBody = {0. 番号リスト 50 'replyToken': replyToken, 51 'messages': LineMessageObject 52 }; 53 const replyOptions = { 54 'method': 'POST', 55 'headers': replyHeaders, 56 'payload': JSON.stringify(replyBody) 57 }; 58 UrlFetchApp.fetch('https://api.line.me/v2/bot/message/reply', replyOptions); 59} 60 61// SSへの記載 62function insert_ss(text) { 63 64 const message = responseLineJson.message; 65 const input_text = message.text; 66 const sheet = SpreadsheetApp.openById(‘SS_hogehoge’); 67 68 sheet.getRange('A2').setValue(input_text); 69 70}
WutthikraiT1990👍を押しています

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

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

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

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

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

guest

回答2

0

ベストアンサー

トリガーログを見ている限りdoPostで失敗しています。

が具体的にどんなログ出ているのか不明ですが、

const responseLineJson = JOSN.parse(responseLine).events[0];

JOSN じゃなくて JSON です。

DIFF

1- const responseLineJson = JOSN.parse(responseLine).events[0]; 2+ const responseLineJson = JSON.parse(responseLine).events[0];

投稿2021/04/30 08:18

draq

総合スコア2573

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

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

python_heroku

2021/04/30 11:40

ご指摘ありがとうございます。 非常に単純な部分で間違っていてお恥ずかしい限りです。。 また、replyLineの呼び方も間違っておりました。。 こちら修正しましたら解決しました。ありがとうございます。
guest

0

全体を実行して試せていないので、解決にはならないかもしれませんが、
・insert_ss()関数はtextしか渡されていないので、中でresponseLineJsonやmessage等の変数は使えない。
・シート(シート名)を指定する必要あり

下記のように直したら動くでしょうか。
(先頭が「-」(赤色)の行は削除、先頭が「+」(緑色)の行は追加)

diff

1function insert_ss(text) { 2 3- const message = responseLineJson.message; 4- const input_text = message.text; 5- const sheet = SpreadsheetApp.openById(‘SS_hogehoge’); 6+ const spreadsheet = SpreadsheetApp.openById(‘SS_hogehoge’); 7+ const sheet = spreadsheet.getSheetByName("シート名"); 8 9- sheet.getRange('A2').setValue(input_text); 10+ sheet.getRange('A2').setValue(text); 11}

投稿2021/04/30 03:56

編集2021/04/30 04:02
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

python_heroku

2021/04/30 11:41

こちらのご指摘ありがとうございました。 スプレッドシートの呼び方については元の記載のママで問題ありませんでしたが、テキストのご指摘についてはおっしゃる通り、誤っていたため、修正させて頂き問題なくデータ取得できるようになりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問