首页 > 解决方案 > 如何修复/链接/连接 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] 收到的外观数组。arrayFromButton

我确定我们可以通过案例名称 (111/111/111) 连接列表和按钮,但不知道如何:( 1.Yanson - 触发发送消息 2.Bot 发送带有行的消息。3.按下内联按钮在 bot msg. 4. Accepted 出现在已发送的行附近。这就是我想要获取的内容并为步骤 4 搜索解决方案。 逻辑

标签: javascriptgoogle-apps-scriptgoogle-sheetstelegram-bot

解决方案


推荐阅读