在Google工作表中从电报机器人输入数据

时间:2019-05-20 15:15:48

标签: javascript typescript api google-sheets telegram-bot

我想通过telgeram bot将电子表格用作TODO列表,以便在手机中输入应保存在电子表格中的内容时使用({{3}这样的即时编码 一切都是真的,谷歌表,电报机器人是真正感染,但我不知道为什么当我在电报机器人中输入数据时,这并没有在谷歌表中保存任何内容。

请帮助我

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"

}
*/

期望这会保存电报bot键入的所有内容,并将数据保存在Google工作表行中。但是它会保存数据或将其显示在工作表单元格中。

1 个答案:

答案 0 :(得分:0)

我认为使用App脚本与电子表格进行交互并不十分灵活,如果要扩展应用程序并添加更多功能,效果可能不佳。

我创建了一个整个项目,使讲师可以管理他们的注册表并从电报中参加,然后自动更新电子表格。我使用了官方Google Spreadsheet Api,与App脚本相比,该文档具有出色的文档编制和灵活的用法。

这是github上项目的代码。您可以在the modules folder,然后在spreadSheetController中找到我为电子表格编写函数的位置。该项目规模很大,但是我可以通过简单的方式介绍它如何适合您的用例。

基本要求:

  1. 使用库与电报api进行交互,而不要自己发出POSTGET的请求。您可以使用node-telegram-bot-api,但可以使用自己选择的other libraries

  2. 使用api对您的Google电子表格进行身份验证。 Google小组敬上quick start,您可以按照说明进行操作,并且应该有一个可编程的电子表格。我假设您将在nodejs中完成该操作。

一旦您拥有了这两点,我上面链接到的项目将很有用。我希望这会有所帮助,如果不清楚的话,请让我知道我不想将所有代码都粘贴到这里(这已经很多了),但是出勤项目应该可以自我解释。