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

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回答

2442閲覧

ボットサーバーから200以外のHTTPステータスコードが返されましたと出てしまう。

JetSzero

総合スコア8

LINE Messaging API

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

Google Apps Script

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

0グッド

0クリップ

投稿2020/08/15 08:53

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記録しました"; };

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

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

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

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

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

guest

回答1

0

ベストアンサー

webhookの検証時には特別にreplyTokenが00000000000000000000000000000000のイベントが飛んできます。

そのため、doPost関数にそれをキャッチする処理を書けばエラーにならないはずです。

if (replyToken === '00000000000000000000000000000000') { return ContentService.createTextOutput(JSON.stringify({'content': 'post ok'})).setMimeType(ContentService.MimeType.JSON); }

投稿2020/08/18 16:09

Arahabica

総合スコア209

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

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

JetSzero

2020/09/06 12:45 編集

試したんですけど、結局できませんでした。 人任せでも仕訳けないのですが、ほかにおかしなところはないでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問