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

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

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

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

Google Apps Script

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

Q&A

解決済

1回答

494閲覧

「LINEbot*GAS】webhookは動いてるが、返信部分だけ動かない

sngmmr

総合スコア1

LINE Messaging API

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

Google Apps Script

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

0グッド

0クリップ

投稿2023/01/30 07:33

前提

ネットに転がっているソースを使って、LINEbotの家計簿を作っています。

参考サイト下記

LINEから項目を送信すると、スプシに記載されるところまではうまく動いているのですが、返信文言が返ってきません

調べてさまざまなコードを使ってみたんですが、ダメでした…
どこでエラーになっているのかわからず、お力をお借りできますと幸いです。
よろしくお願いいたします。

var SPREADSHEET_ID = '1nlEjp7dHM36k_t3pfbr-VYkXBixhh9J37ih-iEupG5k'; var ACCESS_TOKEN = 'OYqUa8WYl8ZbPYd9exxtcuATF+9R08Q8/bHtz3KDVuUuMLoBXncXGkmP8QtKKd7oRiP8JqzRd5iQjDmWBTeUW9/aiMy3M1z89cKANWFozsC3Qobp5eVC18JMnIp/gFShF+mOIqHkfvYeA/miZ6/isgdB04t89/1O/w1cDnyilFU='; var URL = 'https://api.line.me/v2/bot/message/reply'; // 応答メッセージ用のAPI URL function doPost(e) { // ユーザーのメッセージを取得 var userMessage = JSON.parse(e.postData.contents).events[0].message.text; //LINEメッセージを「改行」で分割 var messageParameter = userMessage.split(/\r\n|\n/); Logger.log(messageParameter) //対象のスプレッドシートを取得 var targetSs = SpreadsheetApp.openById(SPREADSHEET_ID); //対象のシート取得 var targetSht = targetSs.getSheetByName('accmulate'); //最終行取得 var lastRow = targetSht.getLastRow(); //現在年月日取得 var date = Utilities.formatDate(new Date(), 'Asia/Tokyo', 'yyyy/MM/dd'); //各セルに書き込み //A列に記入年月日 targetSht.getRange('A' + (lastRow + 1)).setValue(date); //B列に項目(メッセージの1行目) targetSht.getRange('B' + (lastRow + 1)).setValue(messageParameter[0]); //C列に金額(メッセージの2行目) targetSht.getRange('C' + (lastRow + 1)).setValue(messageParameter[1]); //D列に備考(メッセージの3行目) targetSht.getRange('D' + (lastRow + 1)).setValue(messageParameter[2]); //E列に〜〜(メッセージの4行目) targetSht.getRange('E' + (lastRow + 1)).setValue(messageParameter[3]); //返信メッセージ分岐 var post_message = ""; if (messageParameter[0].match(/費$|代$/)) { post_message = (messageParameter[1]) + "円を" + (messageParameter[0]) + "に記載しました!"; } else if (messageParameter[0].match(/^いくら?$|今いくら?$/)) { post_message = confirmRecord(date); } else if (messageParameter[0].match(/^何も\n*/)) { post_message = '何も買わなかったんだね、えらい!!'; } else { post_message = '項目\n値段\n備考\nで入力してください!'; } //返信する var replyMessage = function (e) { var replyToken = JSON.parse(e.postData.contents).events[0].replyToken; UrlFetchApp.fetch(URL, { headers: { 'Content-Type': 'application/json; charset=UTF-8', Authorization: 'Bearer ' + ACCESS_TOKEN }, method: 'post', payload: JSON.stringify({ replyToken: replyToken, messages: [ { type: 'text', text: post_message, } ] }) }) return ContentService.createTextOutput(JSON.stringify({ 'content': 'post ok' })).setMimeType(ContentService.MimeType.JSON); } }

試したこと・できていること

  • スプシへの記載はできている
  • post_message の定義はできていることは確認済み([e]の部分を固定にして、logger.logで確認しました。)

補足情報(FW/ツールのバージョンなど)

下記の部分についてはまだ定義してないので、無視でOK

else if (messageParameter[0].match(/^いくら?$|今いくら?$/)) { post_message = confirmRecord(date); }

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

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

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

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

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

guest

回答1

0

ベストアンサー

下から2行目に下記のように、
replyMessage(e);を追記してください。
(当然ですが修正の反映のためにデプロイし直す必要もあります)

js

1前半略 2..... 3.... 4... 5//返信する 6 var replyMessage = function (e) { 7 var replyToken = JSON.parse(e.postData.contents).events[0].replyToken; 8 9 UrlFetchApp.fetch(URL, { 10 headers: { 11 'Content-Type': 'application/json; charset=UTF-8', 12 Authorization: 'Bearer ' + ACCESS_TOKEN 13 }, 14 method: 'post', 15 payload: JSON.stringify({ 16 replyToken: replyToken, 17 messages: [ 18 { 19 type: 'text', 20 text: post_message, 21 } 22 ] 23 }) 24 }) 25 return ContentService.createTextOutput(JSON.stringify({ 'content': 'post ok' })).setMimeType(ContentService.MimeType.JSON); 26 } 27 // 下記を追加 28 replyMessage(e); 29} 30

投稿2023/01/30 10:11

編集2023/01/30 10:12
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

sngmmr

2023/01/30 10:55

解決いたしました!! ありがとうございます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問