前提・実現したいこと
LINE BOTの開発をしています。
受信メッセージの中にスプレッドシート内の文字列が含まれていれば
メッセージを送信できるようにしたいです。
追記:受信メッセージの文字列がスプレッドシート内の文字と部分一致していれば
メッセージを送信できるようにしたいです。
発生している問題
受信メッセージ(text_str)からスプレッドシート内のA列の文字と一致するものを探して
あれば右のセルにある文字を送信するものになってますが、
text_strとエクセルの文字列が一致しないと送れません。
一致時のみ返信は確認済みです。
GAS
1/* 2スプレッドシート 3[ 4[おはよう,はい、朝ですね。], 5[こんにちは,はい、いい一日ですね。] 6] 7*/ 8var API_URL = 'https://api.line.me/v2/bot/message/reply'; // 固定です 9var CHANNEL_ACCESS_TOKEN = 'XXXXXX'; 10 11function doPost(e) { 12 13 var reply_token= JSON.parse(e.postData.contents).events[0].replyToken; 14 if (typeof reply_token === 'undefined') { 15 return; 16 } 17 18var user_message=""; 19var text_str = JSON.parse(e.postData.contents).events[0].message.text;//"おはようございます"を代入 20 21var sheet = SpreadsheetApp.openById('YYYYYY').getSheets()[0]; 22var arrData = sheet.getDataRange().getValues(); 23 24var _ = Underscore.load(); 25var arrTrans = _.zip.apply(_, arrData); 26var gyo = arrTrans[0].indexOf(text_str); 27 28if (gyo != -1){ 29user_message=sheet.getRange(gyo+1,2).getValue();//期待してる返事:はい、朝ですね。 30}else{ 31user_message="失敗です。"; 32} 33 34UrlFetchApp.fetch(API_URL, { 35 'headers': { 36 'Content-Type': 'application/json; charset=UTF-8', 37 'Authorization': 'Bearer ' + CHANNEL_ACCESS_TOKEN, 38 }, 39 'method': 'post', 40 'payload': JSON.stringify({ 41 'replyToken': reply_token, 42 'messages': { 43 'type': 'text', 44 'text': user_message 45 }, 46 }), 47 }); 48 return ContentService.createTextOutput(JSON.stringify({'content': 'post ok'})).setMimeType(ContentService.MimeType.JSON); 49}
試したこと
ここよりGASのUnderscoreを導入済、コードも参考にしています。
https://tonari-it.com/gas-array-underscore-zip-apply/
indexOf(/text_str/)では返ってこないようです。
回答1件
あなたの回答
tips
プレビュー