【发布时间】:2020-09-24 18:24:15
【问题描述】:
正在为电报机器人和 googlesheet 之间的通信编写应用脚本。这是用 googleapp 脚本编写的。在 Guru 的一些帮助下,我能够完成大部分工作,包括 APi 连接、webhook 和其他相关功能。在 JSON 上提取“文本”不知何故不起作用。我调试并发现var userInput = contents.result[1].date 导致我的脚本停止。
- 电报用户添加机器人
- pass 中的用户密钥(例如 applegate)
- 脚本将在 googlesheet 上搜索匹配项
- sendMessage 将通过电报向用户返回成功或失败消息
从我的手机到机器人的电报消息中的实际 JSON 内容如图所示,我输入了“欢迎”:
var yourJSON = {
ok: true,
result: [
{
update_id: 11111111,
message: {
message_id: 412,
from: {
id: 22222222,
is_bot: false,
first_name: "don",
username: "king",
language_code: "en",
},
chat: {
id: 333333333,
first_name: "Don",
username: "king",
type: "private",
},
date: 1600865179,
text: "Test",
},
},
{
update_id: 111111111,
message: {
message_id: 413,
from: {
id: 1111111111,
is_bot: false,
first_name: "Don",
username: "king",
language_code: "en",
},
chat: {
id: 44444444,
first_name: "don",
username: "king",
type: "private",
},
date: 1600865186,
text: "applegate",
},
},
],
};
下面是当我弹出//var userInput = contents.result[1].date;时一直停止的脚本
function doPost(e){
var contents = JSON.parse(e.postData.contents);
var id = contents.message.from.id;
var username = contents.message.chat.username;
//var userInput = contents.result[1].date;
sendMessage(id, username +", " + "Please wait");
var ssId = "XXXXXXX";
var sheet = SpreadsheetApp.openById(ssId).getSheetByName("Sheet1");
var idArr = sheet.getRange("A2:A").getValues();
idArr = idArr.map(row => row[0]);
var idIndex = idArr.indexOf(userInput);
if(idIndex < 0){
sendMessage(id, "User not found")
}else{
let rowNumber = idIndex + 2;
let colNumber = 4; //col D
var dateNow = new Date;
sheet.getRange(rowNumber, colNumber).setValue(dateNow);
sendMessage(id, "You have successfully registered");
}
}
谁能指出我正确的方向?
编辑: 我发现由于某种原因 var userInput = contents.message.text 可以将文本输出。但是输入和返回成功或失败的匹配不起作用。现在是代码。
function doPost(e){
var contents = JSON.parse(e.postData.contents);
var id = contents.message.from.id;
var username = contents.message.chat.username;
var userInput = contents.message.text;
sendMessage(id, username + userInput +", " + "Please wait");
var ssId = "XXXX";
var sheet = SpreadsheetApp.openById(ssId).getSheetByName("Sheet1");
var idArr = sheet.getRange("A2:A").getValues();
var valueRange = idArr.map(row => row[0]);
var idIndex = idArr.indexOf(userInput);
if(userInput == valueRange){
sendMessage(id, "You have successfully inpro")
let rowNumber = idIndex + 2;
let colNumber = 4; //col D
var dateNow = new Date;
sheet.getRange(rowNumber, colNumber).setValue(dateNow);
}else{
sendMessage(id, "User not found")
}
}
【问题讨论】: