Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Telegram Bot 對 Google 試算表做跨工作表多欄位搜尋,机器人都无回应?

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

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

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

}

//程式碼結束

回答

成为首答用户。去 写回答
相关文章
【Rust日报】 2019-12-20 Serverless - Rust 使用 WASM 加 Cloudflare
#[non_exhaustive] structs, enums, and variants
MikeLoveRust
2019/12/25
7830
2017年最突出研究發現之一:人工智能會否取代人類
2017年最突出的研究调查发现,超过70%的美国人认为,机器人和人工智能在未来可能会取代人类的工作。然而,大多数受访者并不认为自己的工作会被取代。这项调查还发现,人们对于不同行业的工作被取代的担忧程度不同,如快餐业和软件工程行业的工作更容易被取代,而教师和护士等职业则相对较难被取代。此外,调查还发现,人们对于政府应该限制机器人和人工智能取代人类工作的政策持不同态度。
企鹅号小编
2018/01/08
5650
2017年最突出研究發現之一:人工智能會否取代人類
淺談晶片實體設計-競爭力(Competitiveness)
题记:本文是 funBroad 系列文章的第一篇,中心思想还是,在头部企业可以吃更多『设计余量』红利时,老二老三老四老五跟老小们怎么跟随,怎么提高自身竞争力——最后一段标红部分可细读。
老秃胖驴
2020/05/22
7610
web 开发规则,代码规范
參數取得需透過 filter_input 函數取得,不得使用 _GET、 _POST
Cell
2022/02/25
7790
ios苹果app上架流程
什麼都是假的,只有 App 上架 Store 才是真的。千辛萬苦完成 App 後,下一步、也是最重要的一步,就是把 App 送審上架!為了讓新手都能一次就送審成
iOS程序应用
2023/02/10
1.4K0
ios苹果app上架流程
C#-筆記-基礎
/r/n win系統輸出的回車 Ctrl+k+d 快速對齊 Ctrl+k+c 快速注釋 Ctrl+k+u 快速取消注釋
用户9857551
2022/06/28
4920
C#-筆記-基礎
【ES三周年】基于ELK的日志分析服务
本專題作品開發一套基於ELK的日誌分析服務,提供多種日誌類型解析及對應的可視化功能。目前提供的日誌類型分別為系統日誌(syslog)、網功能變數名稱稱系統日誌(dnslog)及網頁伺服器日誌(nginxlog),可視化功能包含圖表呈現和文字說明等。
sh1mwww
2023/02/15
1.3K0
Excel公式技巧41: 跨多工作表统计数据
示例工作簿中有3个需要统计数据的工作表:表一、表二、表三,还有1个用于放置统计数据公式的工作表:小计,如下图1所示。
fanjy
2020/07/29
16.3K1
Excel公式技巧41: 跨多工作表统计数据
催生超低功耗邊緣AI應用 tinyML賦予MCU產業新契機
物聯網(IoT)相關技術不斷向前演進,加上節能減碳意識抬頭,使得人工智慧(AI)也從雲端走向邊緣端,僅需mW等級的超低功耗就能進行機器學習(Machine Learning,ML)的「微型機器學習」(tinyML)概念應運而生,近年相關技術發展飛快,擠身熱門前瞻技術之列。運用微控制器(MCU)為邊緣裝置(Edge Device)裝上大腦,將有機會讓電子貨架標籤、感測器等邊緣裝置上,也能增添智慧應用。
用户6026865
2022/09/02
7090
催生超低功耗邊緣AI應用 tinyML賦予MCU產業新契機
渗透测试技巧分享
1.AT時提示綁定句柄無效 經常碰到的這個問題,百度搜索的全部都沒一個能解決的。 正確的解決辦法是先在地址欄\\1.1.1.1 得到對方機器名,例如ADMINPC,然後,CMD echo 1.1.1.1 ADMINPC >>C:\windows\system32\drivers\etc\hosts 然後就可以at了,再也不會提示句柄無效了。 後記:其實也不需要對方的機器名,隨便echo 一個字符代替機器名即可。 2.ftp 一句話download 以前都是一個一個echo,然後ftp-s,很不方便,用下面
FB客服
2018/02/01
8780
渗透测试技巧分享
QLineEdit 输入验证(相关的设置)
LineEdit提 供一个文字输入栏位,可以输入文字或数字,我们可以对输入作验证,或是设定为一般显示、密码显示等等,以下的程式是个简单的设定示范:
bear_fish
2018/09/20
3K0
postgresql高级应用之行转列&汇总求和
postgresql高级应用之行转列&汇总求和 轉載請注名出處 https://www.cnblogs.com/funnyzpc/p/14732165.html 前言 节前公司业务方需要做一個統計報表,这个报表用于统计当月估计几个明星品的销售情况,而我们的数据是按行存储的就是日期|产品|渠道|销售额这样,说是也奇了怪了,我们买的报(guan)表(yuan)系(la)统(ji) 竟然不能容易地实现。。。,于是我看了看,然后想了想,发现是可以通过sql算出这样一个报表(多亏了postgresql的高阶函数
上帝
2021/05/07
1.9K0
postgresql高级应用之行转列&汇总求和
Python 实现多 Sheet 表合并、多工作簿合并、一表按列拆分
作者:黄伟 来源:杰哥的IT之旅(ID:Jake_Internet) 转载请联系授权(WeChat ID:Hc220066)
AI算法与图像处理
2019/11/13
11.1K0
ICLR'22 | You're AllSet! 超图GNN的新视角!
Title: You are AllSet: A Multiset Learning Framework for Hypergraph Neural Networks.
Houye
2022/04/14
3890
ICLR'22 | You're AllSet! 超图GNN的新视角!
面试软件测试时,面试官最想听到的答案是什么?
题主:最近在找实习。面试软件测试时,面试官让你测一个软件,比如朋友圈,或者让你测试你的电脑为什么打不开网页,而QQ可以打开之类的,他最想听到的答案是什么? 作者:赏味不足 lz说的这种情况在软件测试面试中还是非常常见的。无论是外包还是自己公司员工都有这种情况。 我个人来分析一下这类举动面试官想听到的几种可能不错的回答,由于面试官多种多样,所以仅供参考: 1. 面试官让你测试一个软件,而不是直接问一个具体的问题,是有一定原因的。我们可以将这个看成一个即兴的小型的项目。那么作为一个软件测试人员,我们首先需要的是
企鹅号小编
2018/01/10
8080
[ISUX譯]Touch bar 設計指南
導語:日前蘋果發布會上,最大的亮點之一當屬替代一欄功能鍵的Touch bar。本文包括有5個小節,詳細介紹了Touch bar設計原則、新特性和基本元素 ,一起來學習。 Touch bar概述 Touch Bar是位於新一代MacBook Pro鍵盤上方的一條 Retina 顯示屏,同時也是與主屏幕內容交互提供動態操作界面的輸入設備。基於當前語境,Touch Bar的這些控件能對系統或應用的功能進行快速訪問。 例如,當用戶在編輯文檔時,Touch Bar可提供調整字體類型和大小的控件。 當用戶查看地圖時,T
腾讯ISUX
2018/06/29
8750
postgresql高级应用之合并单元格
postgresql高级应用之合并单元格 转载请注明出处https://www.cnblogs.com/funnyzpc/p/14732172.html 1.写在前面✍ 继上一篇postgres
上帝
2021/05/11
7050
postgresql高级应用之合并单元格
linux 信号sigabrt,關於Linux中的SIGABRT信號
SIGABRT是中止一個程序,它可以被捕捉,但不能被阻塞。處理函數返回后,所有打開的文件描述符將會被關閉,流也會被flush。程序會結束,有可能的話還會core dump。 當程序調用abort(3)時,該進程會向自己發送SIGABRT信號。所以,SIGABRT一般用於信號中一些關鍵的處理,assert失敗時也會使用它。你不應該去捕捉SIGSEGV和SIGABRT信號,如果收到這種信號,說明進程處於一個不確定的狀態,很可能會直接掛起。
全栈程序员站长
2022/07/23
2.8K0
Telegram Bot – 在线获取群聊GroupChat ID 教程
1-将机器人添加到组中。 转到组,单击组名称,单击添加成员,在搜索框中搜索您的机器人,如下所示:@my_bot,选择您的机器人并单击添加。
暮城
2022/02/28
32.7K0
python合并工作表 VS excel合并工作表,看看合并工作表哪家强!
在日常办公工作中,我们可能会碰到多个或者几百上千个数据结构都相同 sheet工作表需要你进行合并汇总。而excel和python都能进行工作表的合并,那你知道他们两个的操作谁更为好用的吗?今天就分别介绍excel和python合并工作表的方法,看看合并工作表那家强!
Python与Excel之交
2021/08/05
1.7K0

相似问题

做定期快照快照容量怎么算?

1254

搜一搜为什么搜不到我公众号的文章?

42.3K

雲測試計價方式?

1169

vba跨表定位指定列合并复制?

049

腾讯 云搜 鉴权失败?

1356
相关问答用户
腾讯云TDP | TDP会员擅长3个领域
平安资管 | 架构师擅长4个领域
擅长5个领域
擅长3个领域
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档