Пытаюсь заполнить бланк заказа в гугл листах через telegram-bot.
После того, как пользователь ввел название формы заказа (например, «Лист1»), я хочу отправлять пользовательские элементы из формы заказа по одному элементу за раз и заполнять соответствующие ответы на листе Google.
например:
Пользователь: Sheet1. Бот: Apple. Пользователь: 5. Бот: Банан. Пользователь: 2
пример формы заказа
На данный момент я могу отправить пользователю все элементы в одном ответе, но не могу понять, как отправить один элемент за раз и записать ответ в соответствующую ячейку.
var token = "xxx"; //token of telegram-bot from BotFather
var telegramUrl = "https://api.telegram.org/bot" + token;
var webAppUrl = "https://script.google.com/macros/s/xxx/exec";
var ssId = "xxx"; /*token of google spreadsheet in
https://docs.google.com/spreadsheets/d/xxx/edit#gid=0 */
function getMe() {
var url = telegramUrl + "/getMe";
var response = UrlFetchApp.fetch(url);}
function setWebhook() {
var url = telegramUrl + "/setWebhook?url=" + webAppUrl;
var response = UrlFetchApp.fetch(url);}
function sendText(id,text) {
var url = telegramUrl + "/sendMessage?chat_id=" + id + "&text=" + text;
var response = UrlFetchApp.fetch(url);}
function doGet(e) {
return HtmlService.createHtmlOutput("Hi there");}
function doPost(e) {
var data = JSON.parse(e.postData.contents);
var text = data.message.text;
var id = data.message.chat.id;
var name = data.message.chat.first_name;
var out = []; //array to store name of all sheets in spreadsheet
var sheets = SpreadsheetApp.openById(ssId).getSheets();
for (var y = 0 ; y < sheets.length ; y++) {
out.push( [ sheets[y].getName() ] );}
var sheet = SpreadsheetApp.openById(ssId).getSheetByName(text);
if (inArray(text, out) == true){
var cache = CacheService.getScriptCache();
if (cache.get('order') == text){
var range_test = SpreadsheetApp.openById(ssId).getSheetByName(text).getRange("A1:A3").getValues();
//B10 value is 0
var range_item = SpreadsheetApp.openById(ssId).getSheetByName(text).getRange("B10").getValues();
for (var r = 0; r < range_test.length; r++){
//send to telegram names of all items
sendText(id,range_test[r])}
//trying to cash some values and write it to a cell
var cashed_item = cache.put(range_item, range_test[0], 30);
var cashed_item_get = cache.get(range_item)
sheet.getRange('A9').setValue(text);
sheet.getRange('A10').setValue(cashed_item_get);
}
else {
// Puts the value from text into the cache using the key 'order'
var cached = cache.put('order', text, 30)}
}
else {sendText(id,"Error. Write the correct vendor name")
sendText(id,out)}
}
function inArray(target, array) {
for(var k = 0; k < array.length; k++) {
if(array[k] == target) {
return true; }
}
return false;
}
На данный момент приведенный выше код работает следующим образом: PrtScn из телеграммы . Пользователь дважды вводит имя продавца и получает ответ с именами всех товаров.