首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Telegram Bot 對 Google 試算表做跨工作表多欄位搜尋,机器人都无回应?

Telegram Bot 對 Google 試算表做跨工作表多欄位搜尋,机器人都无回应?

提问于 2023-05-02 22:50:39
回答 0关注 0查看 98

我按照视频设置了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))); 

}

//程式碼結束

回答

和开发者交流更多问题细节吧,去 写回答
相关文章

相似问题

相关问答用户
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档