我按照视频设置了googlesheets,
并且代码内
1.TelegramBotToken
2.要被搜尋的Google試算表ID
3.參數設定檔的Google試算表ID
4.Google網路應用程式網址
都有填入并部属,但是对机器人发送文字,机器人皆无回应,一直找不到是哪里有问题,请大佬们查看下,谢谢QQ
参考youtube
https://www.youtube.com/watch?v=4yDmAFXkyro&list=PLLrJ9DEA0QKPtph26smxgd9_gYROD4CrM&index=4&ab_channel=Boris%E7%9A%84%E5%88%86%E4%BA%AB%E5%B0%8F%E7%AB%99
//程式碼開始 var TelegramBotToken = ""; //Telegram Bot 的權杖 var spreadSheetId = ""; //要被搜尋的 Google 試算表ID var spreadSheetConfigId = ""; //參數設定檔的 Google 試算表ID var webAppURL = ""; //Google 網路應用程式網址
var spreadSheetConfig = SpreadsheetApp.openById(spreadSheetConfigId); var sheetConfig= spreadSheetConfig.getSheetByName("參數設定"); var sheetConfigData = sheetConfig.getSheetValues(1, 1, sheetConfig.getLastRow(), 5); var whiteListMode = sheetConfigData[1][0]; var fuzzySearch = sheetConfigData[1][1]; var sheetName = transformArray(sheetConfigData, 3); //工作表名稱 var searchColumn = transformColumnNum(transformArray(sheetConfigData, 4)); //搜尋第幾欄的資料 var whiteList = transformArray(sheetConfigData, 5); //白名單(允許取得資料的使用者ID var TelegramBotAPI = "https://api.telegram.org/bot" + TelegramBotToken + "/"; var spreadSheet = SpreadsheetApp.openById(spreadSheetId);
function transformArray(arrayData, columnNum) { var returnArray = []; for (var i = 1; i < arrayData.length; i++) { if (arrayData[i][columnNum - 1] === "") {break;} returnArray.push(arrayData[i][columnNum - 1]); } return returnArray; }
function transformColumnNum(arrayData) { var returnArray = []; var transformStr; var transformNum; for (var i = 0; i < arrayData.length; i++) { transformStr = arrayData[i].toUpperCase(); transformNum = 0; for (var j = 0; j < transformStr.length; j++) { transformNum += Math.pow(26, (transformStr.length - j - 1)) * (transformStr.charCodeAt(j) - 64) } returnArray.push(transformNum); } return returnArray; }
function doPost(e) { var userData = JSON.parse(e.postData.contents); var allowed = whiteListMode; var clientID = userData.message.chat.id;
if (!userData.message.text) {return;}
if (allowed == 1) { // 檢查是否是允許的用者提出搜尋需求 var allowedUser = whiteList.filter(function(item, index, array){ return item.toString() == clientID; });
if (allowedUser.length === 0 || userData.message.text.toLowerCase() == "findmyid") { var replyMessage = "您的使用者 ID 是「" + clientID + "」,請將此 ID 告知此官方帳號的擁有者加入白名單後才能開始查詢資料。"; pushTelegramBotMessage(replyMessage, clientID); return; } }
var searchContent = userData.message.text; var notFind = 1;
for (var i = 0; i < sheetName.length; i++) { var searchResult = []; var sheet = spreadSheet.getSheetByName(sheetName[i]); var lastRow = sheet.getLastRow(); var lastColumn = sheet.getLastColumn(); var sheetData = sheet.getSheetValues(1, 1, lastRow, lastColumn);
for (var j = 0; j < searchColumn.length; j++){ var searchTemp = sheetData.filter(function(item, index, array){ if (fuzzySearch == 0) {return item[searchColumn[j] - 1].toString().toLowerCase() === searchContent.toLowerCase();} else {return item[searchColumn[j] - 1].toString().toLowerCase().indexOf(searchContent.toLowerCase()) != -1 ;} }); searchResult = searchResult.concat(searchTemp); } if (searchResult.length > 0) { notFind = 0; var replyContent = ""; searchResult = uniqueArrayElement(searchResult); replyContent = "在「" + sheetName[i] + "」中搜尋到 " + searchResult.length + " 筆資料"; pushTelegramBotMessage(replyContent, clientID); for (var k = 0; k < searchResult.length; k++) { replyContent = sheetData[0][0] + ":" + searchResult[k][0]; for (var l = 1; l < lastColumn; l++) { replyContent += "\n" + sheetData[0][l] + ":" + searchResult[k][l]; } pushTelegramBotMessage(replyContent, clientID); } } } if (notFind === 1) { var replyMessage = "找不到「" + searchContent + "」相關的資料。"; pushTelegramBotMessage(replyMessage, clientID); } }
//移除陣列中重複的元素 function uniqueArrayElement(arrayData) { var result = arrayData.filter(function(element, index, arr){ return arr.indexOf(element) === index; }); return result; }
//傳送 Telegram 訊息給使用者 function pushTelegramBotMessage(message, clientID){ var payload = { "chat_id": clientID, "text": message, } var options = { "method": "post", "contentType": "application/json", "payload": JSON.stringify(payload) }; UrlFetchApp.fetch(TelegramBotAPI + "sendMessage", options); }
//設定 Telegram Bot 的 webhook
function telegramSetWebhook() {
console.log(JSON.parse(UrlFetchApp.fetch(TelegramBotAPI + "setWebhook?url=" + webAppURL)));
}
//程式碼結束