各位大大好,最近想擴充以前做過的LINE BOT的功能,但是關鍵字的判斷式一直沒能夠成功判斷。
想問各位大大如果想判斷LINEBOT使用者那端輸入的字句是否為"查詢熱量"時的寫法
寫成
if((userData.events[0].message.text) == "查詢熱量")
{想做的事}
這樣有錯嗎?
//程式碼開始
var CHANNEL_ACCESS_TOKEN = "";
var ss = SpreadsheetApp.openByUrl("");//功能選單
var sheet2 = ss.getSheetByName("工作表1");
var lastRow2 = sheet2.getLastRow();
var lastColumn2 = sheet2.getLastColumn();
var sheet2Data = sheet2.getSheetValues(lastRow2, lastColumn2, 1, 1);
function doPost(e) {
var userData = JSON.parse(e.postData.contents);
var replyMessage = [];
var replyContent;
var replyToken = userData.events[0].replyToken;
if((userData.events[0].message.text) == "查詢熱量")
{replyMessage.push({type:"text", text:"請輸入要查詢的食物~"});
sendReplyMessage(CHANNEL_ACCESS_TOKEN, replyToken, replyMessage);
sheet2.appendRow([replyToken,"查詢熱量"]);
}
else if((userData.events[0].message.text) == "紀錄熱量")
{replyMessage.push({type:"text", text:"請輸入要紀錄的食物~"});
sendReplyMessage(CHANNEL_ACCESS_TOKEN, replyToken, replyMessage);
sheet2.appendRow([replyToken,"紀錄熱量"]);
}
}
//回送 Line Bot 訊息給使用者
function sendReplyMessage(CHANNEL_ACCESS_TOKEN, replyToken, replyMessage) {
var url = "https://api.line.me/v2/bot/message/reply";
UrlFetchApp.fetch(url, {
"headers": {
"Content-Type": "application/json; charset=UTF-8",
"Authorization": "Bearer " + CHANNEL_ACCESS_TOKEN,
},
"method": "post",
"payload": JSON.stringify({
"replyToken": replyToken,
"messages": replyMessage,
}),
});
}
//程式碼結束
抱歉
請原諒有點自作主張修改了程式碼
你的問題僅僅出在這一行var sheet2Data = sheet2.getSheetValues(lastRow2, lastColumn2, 1, 1);
失敗後就卡在這裡 沒有執行下去 去掉就會正常了
那你原本的問題 判斷是沒有錯的
你也可以使用switch
去達成目的 也可能會比較好閱讀一點
以下是測試完稍微自己修改的部分 回覆跟紀錄開關分開 可斟酌是否使用
function doPost(e) {
let CHANNEL_ACCESS_TOKEN = "";
let ss = SpreadsheetApp.openByUrl("");
let sheet = ss.getSheetByName("工作表1");
let userData = JSON.parse(e.postData.contents);
let userMessage = JSON.parse(userData.events[0].message.text);
let replyToken = userData.events[0].replyToken;
let replyMessage = [];
let recordCheck = true; // 是否使用sheet紀錄
let replyCheck = true; // 是否回覆訊息
switch (userMessage){
case '查詢熱量':
replyMessage.push({type: "text", text: "請輸入要查詢的食物~"});
break;
case '紀錄熱量':
replyMessage.push({type: "text", text: "請輸入要紀錄的食物~"});
break;
default:
recordCheck = false; // 非需要被記錄的內容
replyCheck = false; // 非需要回覆的內容
break;
}
if(recordCheck){ // 如果紀錄開關為開
sheet.appendRow([replyToken, userMessage]);
}
if(replyCheck){ // 如果應該被回覆
sendReplyMessage(CHANNEL_ACCESS_TOKEN, replyToken, replyMessage);
}
}