前提・実現したいこと
プログラミング超初心者です。
やりたいことはLINEで送信した文字列をスプレッドシートのデータを検索して別セルの文字列を返すというもので、コードはGASで見よう見真似で作ってみました。
最初に作ったものは正常に動いてまして、それをベースに別データの同様なものを新しく作りたいと思いまして、LINEの新しいチャネルを作成し、スプレッドシートをコピペしてからコードを編集(修正)していこうと単純にコピペした状態でテストしてみましたが返答が帰ってきません。
「Webhook設定」などのLINE側の設定や「ウェブアプリケーションとして導入」で「NEW」「Anyone,even anonymous」も間違いなく設定しました。
スプレッドシートでの検索処理は作成は正常にできているのですが、そのデータがリプライできない状況です。
できていたものをコピーして、同じ設定のプロセスを行ってもできない理由がわかりません。
発生している問題・エラーメッセージ
エラーメッセージは見当たりません
該当のソースコード
var CHANNEL_ACCESS_TOKEN = "LINE側のトークン"; var line_endpoint = "https://api.line.me/v2/bot/message/reply"; //SpreadSheetの取得 var SS = SpreadsheetApp.openByUrl("SpreadsheetのURL"); //SpreadsheetのURL var sheet = SS.getSheetByName("リスト"); //Spreadsheetのシート名(タブ名) var lastrow = sheet.getLastRow(); var lastcol = sheet.getLastColumn(); var sheetdata = sheet.getSheetValues(1, 1, lastrow, lastcol); // シード削除("temp"); var delsheet = SS.getSheetByName("temp"); if (delsheet != null) { SS.deleteSheet(delsheet); } //POSTデータ取得、JSONをパースする function doPost(e) { var json = JSON.parse(e.postData.contents); //返信するためのトークン取得 var reply_token= json.events[0].replyToken; if (typeof reply_token === 'undefined') { return; } //送られたLINEメッセージを取得 var user_message = json.events[0].message.text; var array = 0 ; var flag = 0; var k = 0; var add = 0; var str = 0; //文字列分解 var searchchar = user_message.replace('の住所教えて',''); //文字列照合+合致データを配列化(書き出し) for(i=0;i<=lastrow-1;i++){ if(i == 0){ SS.insertSheet('temp'); var tempsheet = SS.getSheetByName("temp"); } if(sheetdata[i][0].match(searchchar)){ k++; // var array = sheetdata[i]; tempsheet.appendRow(array); } } if(array == 0){ var str = '該当なしです。カタカナの全半角、旧漢字の確認をして再度入力ください。' ; tempsheet.getRange(1, 1).setValue(str); } //件数追加 if(array != 0 ){ tempsheet.insertColumnBefore(1); for(j=1;j<=k;j++){ var add = j+'件目'; tempsheet.getRange(j,1).setValue(add); } } //出力 var templastrow = tempsheet.getLastRow(); var templastcol = tempsheet.getLastColumn(); var outdata = tempsheet.getSheetValues(1, 1, templastrow, templastcol); var outdata = outdata.toString(); var outdata = outdata.replace(/,/g, '\n'); console.log(outdata); //返信する内容を作成 if(array == 0){ var reply_messages; reply_messages = [outdata]; }else{ var reply_messages; reply_messages = ["該当件数は" +templastrow +"件です。\n\n" + outdata]; } // メッセージを返信 var messages = reply_messages.map(function (v) { return {'type': 'text', 'text': v}; }); UrlFetchApp.fetch(line_endpoint, { 'headers': { 'Content-Type': 'application/json; charset=UTF-8', 'Authorization': 'Bearer ' + CHANNEL_ACCESS_TOKEN, }, 'method': 'post', 'payload': JSON.stringify({ 'replyToken': reply_token, 'messages': messages, }), }); return ContentService.createTextOutput(JSON.stringify({'content': 'post ok'})).setMimeType(ContentService.MimeType.JSON); }
試したこと
・Webhook設定(ウェブアプリケーションとして導入のURLをコピペし、確認テストは「OK」でした、使用するにチェック入ってます)
・検索結果は当該スプレッドシートの「temp」という名前のシートに記述までは成功してます。
大変恐縮ですが、ご指南頂けますとありがたいです。
以上よろしくお願いします。
あなたの回答
tips
プレビュー