1Sergey1
@1Sergey1

Приём отчетов в телеграм бот и их структурирование?

Добрый день, подскажите как сделать/что посмотреть, почитать.

Хочу сделать, что-бы телеграм бот которого я сделал с помощью BotFather + ManyBot отправлял данные из формы опроса данные в гугл таблицы.
У него есть разные пункты меню, опрос один из них.

Суть в том, что я хочу
ставить задачи людям и отчет принимать в телеграм в виде опроса (пошаговая форма)
и структурировать это в гугл таблицы.
Возможно есть более адекватные и не сложные варианты приёма/проверки отчетов?

Общение будет в телеге, не хочу, что-бы люди выходили в какие-то ЦРМ или приложения, это не удобно будет.

Из языков только немного в JS разбираюсь.

Сейчас проблема скрипта в том, что если я его подключаю к боту, то не работают все его менюшки, а работает он только с этим скриптом в гугл доках.

var token       = "880958063:qqqqqqqqqqqqqqqqqqqqqqq";
var telegramUrl = "https://api.telegram.org/bot" + token;
var webAppUrl   = "https://script.google.com/macros/s/qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq/exec";
var ssId        = "qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq";

function getMe() {
  var url = telegramUrl + "/getMe";
  var response = UrlFetchApp.fetch(url);
  Logger.log(response.getContentText());
}

function setWebhook() {
  var url = telegramUrl + "/setWebhook?url=" + webAppUrl;
  var response = UrlFetchApp.fetch(url);
  Logger.log(response.getContentText());
}

function sendText(id,text) {
  var url = telegramUrl + "/sendMessage?chat_id=" + id + "&text=" + text;
  var response = UrlFetchApp.fetch(url);
  Logger.log(response.getContentText());
}

function doGet(e) {
  return HtmlService.createHtmlOutput("Hi there");
}

function doPost(e) {
  // this is where telegram works
  var data = JSON.parse(e.postData.contents);
  Logger.log(data);
  var text = data.message.text;
  var id = data.message.chat.id;
  var name = data.message.chat.first_name + " " + data.message.chat.last_name;
  var answer = "Hi " + name + ", thank you for your comment " + text;
  sendText(id,data);
  SpreadsheetApp.openById(ssId).getSheets()[0].appendRow([new Date(),id,name,text,answer]);
  
  if(/^@/.test(text)) {
    var sheetName = text.slice(1).split(" ")[0];
    var sheet = SpreadsheetApp.openById(ssId).getSheetByName(sheetName) ? SpreadsheetApp.openById(ssId).getSheetByName(sheetName) : SpreadsheetApp.openById(ssId).insertSheet(sheetName);
    var comment = text.split(" ").slice(1).join(" ");
    sheet.appendRow([new Date(),id,name,comment,answer]);
  }
}
  • Вопрос задан
  • 3218 просмотров
Решения вопроса 1
Пригласить эксперта
Ваш ответ на вопрос

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

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