Как я могу исправить/связать/подключить встроенную кнопку Telegram-бота к ячейке в Google Листе?

#javascript #google-apps-script #google-sheets #telegram-bot

Вопрос:

Итак, у меня есть бот для телеграмм, который работает со сценарием приложения Google.

Мой бот отправляет последнюю строку, которая была отредактирована на моем листе, в любом списке ( более 10 списков).

И сообщение от бота идет со встроенной кнопкой «Принято» — и я получаю массив с данными обратного вызова.

Но я не знаю, как я могу исправить «Принято» в строке ( фиксированной ячейке), откуда я получил сообщение.

Функция — сообщение в telegram

 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);
  }
 

И выполните функцию, которая отслеживает, когда была нажата кнопка, и сохраните ее в списке «Журнал» в виде массива данных.

 function doPost(e) {
  let contents = JSON.parse(e.postData.contents);
  SpreadsheetApp.openById("SheetId").getSheetByName("Log").appendRow([contents]);
 

Так что мне просто нужно сделать так, чтобы, когда кто — то нажимает на кнопку «Принято» — текст «Принято» появляется в столбце 15 рядом с отредактированной строкой, которая только что была отправлена ботом.
Вот как выглядит один из моих списков (пример). Табличный
И вот как выглядит массив, который я получаю от бота[Содержимое]. Кнопка arrayFromButton

Я уверен, что мы можем подключить список и кнопку по имени дела (111/111/111), но не знаем, как 🙁 1.Янсон — триггер для отправки msg 2.Бот отправляет Msg со строкой. 3.Нажатие встроенной кнопки в боте msg. 4. Принято отображается рядом с отправленной строкой. Это то, что я пытаюсь получить и ищу решение для шага 4. Логические

Комментарии:

1. Вы добавляете данные json на лист. Вам нужно получить значения внутри массива. Посмотрите Object.values(contents) , И, возможно, вам нужно отфильтровать некоторые из них.

2. Можете ли вы предоставить пример ожидаемого результата? извините, я не до конца понял цель.

3. Ага. Поэтому я ожидаю, что когда кто-то нажмет кнопку, текст «Принято» появится рядом со строкой ( где-то в столбце 14-15, но рядом со строкой.), которая была отправлена ботом ( Бот отправляет последнюю строку, которая была добавлена в лист (список) с кнопкой «Принято». Если мы возьмем в качестве примера мой экран с листом, Принятый может появиться в столбце «J», если эта строка была отправлена ботом, и кто-то нажал кнопку «Принято», я думаю, мне нужно отфильтровать вывод json с помощью courtcase ( 111/111/111), но я понятия не имею, как его отфильтровать, а затем подключить его к основному листу с raw и исправить его рядом с этим raw, если была нажата кнопка.

4. Поэтому в основном я ожидаю, что когда кто — то нажмет кнопку «Принять», рядом с этой строкой появится текст «Принять», отправленный ботом 🙁

5. Я понимаю, что вы хотите добавить «Принято» в определенную строку. Что неясно, так это как определить, в какой строке должно быть «Принято». Я действительно изо всех сил старался понять данные, отправленные вашим ботом, но я не могу их понять. Пожалуйста, предоставьте копию своего сообщения бота в тексте (не на скриншоте). И предоставьте некоторую информацию о том, как определить, какая строка должна иметь принятое значение. Пожалуйста, основывайте свои условия на фактическом содержании вашего сообщения бота. Я не нашел судебного дела, о котором вы упоминаете.