входные данные от бота telegram в гугл листе - PullRequest
0 голосов
/ 20 мая 2019

Я хочу использовать электронную таблицу через бота telgeram в качестве списка TODO, чтобы при вводе в телефон чего-то, что должно быть сохранено в электронной таблице. (Я кодирую так же, как это https://www.youtube.com/watch?v=XoTpdxbkGGk все верно, и Google лист, Telegram BotЭто правда, но я не знаю, почему при вводе данных в бот telegram это ничего не сохраняет в листе Google.

, пожалуйста, помогите мне, ребята

var token="<<BOT-TOKEN>>";
var url="https://api.telegram.org/bot" + token ;
var webAppUrl="https://script.google.com/macros/s/<<secret>>/exec";
var spId='<<secret>>';
function getme() {
  var response=UrlFetchApp.fetch(url + "/getme");
  Logger.log(response.getContentText());
}
function getupdates() {
  var response=UrlFetchApp.fetch(url + "/getupdates");
  Logger.log(response.getContentText());
} 

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

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

function doGet(m){ 
  return HtmlService.createHtmlOutput("Heloo" + JSON.stringify(m));
}
function doPost(m){
    var contents = JSON.parse(m.PostData.contents);
GmailApp.sendEmail(Session.getEffectiveUser().getEmail(),"Telegram Bot Update",JSON.stringify(contents,null,4));
  var text = contents.message.text;
  var id = contents.message.from.id;
  var name = contents.message.from.first_name + ' ' + contents.message.from.last_name;
  sendText(id, "HI" + name);
SpreadsheetApp.openById(spId).appendRow([new Date(),id,text,contents,name]);
  SpreadsheetApp.openById(spId).appendRow([1,2,3,4,5]);
}
/*
{  
    "parameter": {},
    "contextPath": "",
    "contentLength": 310,
    "queryString": "",
    "parameters": {},
    "postData": {
        "type": "application/json",
        "length": 310,
        "contents": "{\"update_id\":*,\n\"message\":{\"message_id\":12,\"from\":{\"id\":*,\"is_bot\":false,\"first_name\":\"*\\*\",\"username\":\"*\",\"language_code\":\"fa\"},\"chat\":{\"id\":*,\"first_name\":\"*\\*\",\"username\":\"*\",\"type\":\"private\"},\"date\":1558331571,\"text\":\"salaaaaaaaaaaaaam\"}}",
        "name": "postData"

}
*/

ожидайте, что это сохранит все, что напечатано telegramбот и сохранить данные в строках google sheet. но это не сохранить данные или показать их в ячейках листа. он ничего не показывает

1 Ответ

0 голосов
/ 20 мая 2019

По моему мнению, использование скрипта приложения для взаимодействия с вашей электронной таблицей не очень гибко и может быть нехорошо, если вы хотите масштабировать свое приложение и добавлять больше функций.

Я создал целый проект, который позволяет лекторам управлятьих регистры и принять участие от телеграммы, а затем автоматически обновлять электронную таблицу.Я использовал официальный Google Spreadsheet Api , который имеет отличную документацию и гибкое использование по сравнению со скриптом приложения.

Вот код проекта github .Вы можете найти места, где я написал функции для электронной таблицы, в папке модулей , а затем в spreadSheetController .Проект довольно большой, но я могу дать простую работу над тем, как он будет соответствовать вашему сценарию использования.

Основные требования:

  1. Используйте библиотеку для взаимодействия с telegram api вместо того, чтобы самостоятельно делать запросы POST и GET.Вы можете использовать node-telegram-bot-api , но вы можете использовать другие библиотеки на ваш выбор.

  2. Аутентифицировать вашу таблицу Google с помощьюапи.Существует отличный быстрый старт от команды Google, следуйте инструкциям, и у вас должна быть программируемая электронная таблица.Я предполагаю, что вы сделаете это в nodejs.

Как только вы получите эти 2 вещи, проект, на который я ссылаюсь выше, будет полезен.Надеюсь, это поможет, если неясно, дайте мне знать, что я не хочу вставлять сюда весь код (он очень много), но проект посещаемости должен быть понятен.

...