javascript - 如何修复/链接/连接 Telegram bot 内联按钮到 Google 表格中的单元格?
问题描述
所以我有与 Google App Script 一起使用的 Telegram Bot。
我的机器人在任何列表(超过 10 个列表)中发送在我的工作表中编辑的最后一行。
来自 bot 的消息带有内联按钮“已接受”——我正在接收一个带有回调数据的数组。
但我不知道如何将“已接受”修复到我收到消息的行(固定单元格)。
Func - 电报消息
function onEdit(e) {
sendTelegram(e)
}
function sendTelegram(e){
var row = e.range.getRow();
var col = e.range.getColumn();
var startRow = 2; // Starting row
var targetColumn = 2; // Row, where placed trigger to send msg
var ws = sheetName; //List name
var sheet = e.source.getActiveSheet();
var sheetName = e.source.getActiveSheet().getName(); //Takes list name
let Company = e.source.getActiveSheet().getRange(row,13).getValue(); //Takes data from row 2 to 13 Column in every list
var firstCol = 2; // Starting from 2 column
var numOfCols = 13;//Ending in 13 column
var fullRowValues = sheet.getRange(row, firstCol, 1, numOfCols).getValues();
var fullRowString = fullRowValues.flat().toString(); // Makes array toString.
let chatId = "ChatId";// Telegram groupId
var text = encodeURIComponent(Company + " New Document has Been added" + ws)
if(e.source.getActiveSheet().getRange(row,2).getValue() == "Yanson"){ //Yanson- trigger.If in column 2 "Yanson" is set - sends row to group chat.
sendText(chatId,"[New Doc Added!] " + Company + sheetName + " , " + fullRowString,accepted);} //accepted - inline button
发送文本功能
function sendText(chatId, text, keyBoard) {
let data = {
method: 'post',
payload: {
method: 'sendMessage',
chat_id: String(chatId),
text: text,
parse_mode: 'HTML',
reply_markup: JSON.stringify(keyBoard)
}
}
UrlFetchApp.fetch('https://api.telegram.org/bot' + token + '/', data);
}
并且 doPost 函数跟踪单击按钮的时间并将其作为数据数组保存在“日志”列表中。
function doPost(e) {
let contents = JSON.parse(e.postData.contents);
SpreadsheetApp.openById("SheetId").getSheetByName("Log").appendRow([contents]);
所以我只需要做当有人点击按钮“接受”时 - 文本“接受”出现在刚刚由机器人发送的编辑行附近的 15 列中。这就是我的列表之一的外观(示例)。 这就是我从 bot[Contents] 收到的外观数组。
我确定我们可以通过案例名称 (111/111/111) 连接列表和按钮,但不知道如何:( 1.Yanson - 触发发送消息 2.Bot 发送带有行的消息。3.按下内联按钮在 bot msg. 4. Accepted 出现在已发送的行附近。这就是我想要获取的内容并为步骤 4 搜索解决方案。
解决方案
推荐阅读
- swift - 如何在 swiftUI 应用程序中在后台运行核心数据任务?
- rust - 将方法指针向量传递给另一个方法以执行
- node.js - 如何让“foreach(file)”函数在另一个文本文件中创建一个列表?
- amazon-web-services - aws ecs docker 容器无法访问互联网
- reactjs - 在暗/亮模式之间切换 Material UI
- html - 如何让元素慢慢失去动画?
- numbers - pari软件quadray中mod是什么意思
- python - 我只想从给定的数据中打印 10 个结果。我拥有的数据超过 10
- java - Debian 10 机器上的 CS-Studio 4.4.1 + Tango 控件:GUI 失败并出现 SWTException 和 NoClassDefFoundError,可能已弃用 Corba 类
- php - Laravel 验证器仅在两者都存在时才将一个值与另一个值进行比较