@ambal245

Как создать inline_keyboard в Google Apps из ячеек таблицы?

Как в цикле for создать клавиатуру для отправки пользователю. Имеется google таблица в ячейке А записано 4 значения, которые читаем их в переменную. Ниже предоставлен код из редакторе скрипта
function doPost(e){
var update = JSON.parse(e.postData.contents);
var DOC = SpreadsheetApp;
//нам нужен только тип "сообщение"
if (update.hasOwnProperty('message')){
var msg = update.message;
var chat_id = msg.chat.id;
var text = msg.text;
var msg_array = msg.text.split(" ");
// проверяем, является ли сообщение командой к боту
    if (msg.hasOwnProperty('entities') && msg.entities[0].type == 'bot_command') {
       if (msg_array[0] == "/start"){
   var sheet = DOC.getActiveSpreadsheet();
   var sheet1 = sheet.getSheetByName('Прайс лист');

      function getData(){
      var result = [],     
      range = sheet1.getRange("A1:A"), // определяем диапозон ячеек
      values = range.getValues(),
      last = parseInt(sheet1.getLastRow()); //  определяем количество заполненных ячеек
           for (var i = 1; i < last; i++) {
          result.push({'text' : values[i]});   }
      return result; 
    }
 var data = getData();
    var keydoards = [{'inline_keyboard' : data}];

    send('кнопки', chat_id, keydoards)
 }
}
}}

function send (msg, chat_id, keyboard){
var payload = {
'method': 'sendMessage',
'chat_id': String(chat_id),
'text': msg,
'reply_markup' :  JSON.stringify(keyboard),
'parse_mode': 'markdown'
}
var data = {
"method": "post",
"payload": payload
}
var API_TOKEN = 'xxxxxxxxxxxxxxxx'
UrlFetchApp.fetch('https://api.telegram.org/bot' + API_TOKEN + '/', data);
}

В результате работы этого кода формируется следующее и клавиатура не отправляется.
{"inline_keyboard":[{"text":["TEXT1"},{"text":"TEXT2"},{"text":"TEXT3"},{"text":"TEXT4"}]}]

Подскажите Как правильно создать клавиатуру в JSON массиве в цикле for?
  • Вопрос задан
  • 563 просмотра
Пригласить эксперта
Ответы на вопрос 1
@murano64
var mas = [];
const MILLIS_PER_DAY = 1000 * 60 * 60 * 24; //один день
const now = new Date();
const ddd = 8 - now.getDay();
var key = [];

for (i = 0; i < ddd; i++) {
const quarter = new Date(now.getTime() + i * MILLIS_PER_DAY);
mas[i] = quarter.getDate() + " " + monthString(quarter.getMonth());
key.push([{'text' : mas[i], "callback_data": i + 1}]);
}

var keyboard = {'inline_keyboard' : key};

sendKeyboard(chat_id, "Выбери дату...", keyboard);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы