前提
ネットに転がっているソースを使って、LINEbotの家計簿を作っています。
参考サイト下記
- https://yoshikii.com/2018/09/17/linebot-expense/
- https://techblog.istyle.co.jp/archives/6135
- https://yoshikii.com/2018/09/17/linebot-expense/#4_GAS%E3%81%AB%E3%82%B3%E3%83%BC%E3%83%89%E8%A8%98%E8%BF%B0
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); }

回答1件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。
2023/01/30 10:55