qiitaに乗っているlineBotで家計簿を作るというものをまねしてやってみているんですが、どうしても、
最後の検証で【ボットサーバーから200以外のHTTPステータスコードが返されました】と出てしまいます。
どこが間違っているのでしょうか。
var global; var ACCESS_TOKEN = ' '; var id = ''; var dataSheet = SpreadsheetApp.openById(id).getSheetByName('8月'); var url = 'https://api.line.me/v2/bot/message/reply'; function doPost(e) { // WebHookで受信した応答用Token var replyToken = JSON.parse(e.postData.contents).events[0].replyToken; // ユーザーのメッセージを取得 var userMessage = JSON.parse(e.postData.contents).events[0].message.text; var data = JSON.parse(e.postData.contents).events[0]; var result; // 家計簿閲覧モード if (userMessage.match(/家計簿/)) { // シートの内容を取得するメソッド result = showSpreadSheet(); } else { // 家計簿記録モード result = insertToSpreadSheet(data); } //取得内容をreplyに渡す reply(data, result); } //返信用のメソッド function reply(data, msg) { UrlFetchApp.fetch(url, { 'headers': { 'Content-Type': 'application/json; charset=UTF-8', 'Authorization': 'Bearer ' + ACCESS_TOKEN, }, 'method': 'post', 'payload': JSON.stringify({ 'replyToken': data.replyToken, 'messages': [{ 'type': 'text', 'text': msg, }], }), }); return ContentService.createTextOutput(JSON.stringify({'content': 'post ok'})).setMimeType(ContentService.MimeType.JSON); } function showSpreadSheet() { var FValues = dataSheet.getRange('B:B').getValues(); var LastRow = FValues.filter(String).length; var spread = ""; var range; var pay = dataSheet.getRange(2,7).getValue(); var balance = dataSheet.getRange(3,7).getValue(); if (LastRow == 1) { spread = spread + "残高: " + balance + "円\n"; return spread; } for(var i = 1; i <= LastRow; i++) { for(var j = 1; j <= 3; j++) { var range = dataSheet.getRange(i, j); var rangeVal = range.getValue(); if (i > 1 && j == 1) { rangeVal = Utilities.formatDate(rangeVal, 'Asia/Tokyo', 'MM/dd'); } if (i > 1 && j == 3) { rangeVal = rangeVal + "円"; } spread = spread + rangeVal + ","; if(j == 3) { spread = spread + "\n"; } } } spread = spread +"----------------------\n"; spread = spread +"支出合計: " + pay + "円\n"; spread = spread + "残高: " + balance + "円\n"; spread = spread +"----------------------\n"; return spread; } function insertToSpreadSheet(data) { var date = Utilities.formatDate(new Date(), 'Asia/Tokyo', 'yyyy/MM/dd'); var FValues = dataSheet.getRange('B:B').getValues(); var LastRow = FValues.filter(String).length; // 入力文字は品名全角or半角スペース金額 var inputArray = data.message.text.split(/\s+/); var product = inputArray[0]; var price = inputArray[1]; dataSheet.getRange(LastRow + 1, 1).setBorder(true, true, true, true, false, false).setValue(date); dataSheet.getRange(LastRow + 1, 2).setBorder(true, true, true, true, false, false).setValue(product); dataSheet.getRange(LastRow + 1, 3).setBorder(true, true, true, true, false, false).setValue(price); var str = [date, product, price].join(" "); return str + "円\n記録しました"; };
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/06 12:45 編集