Google apps script 如何从slack对话框中获取信息并存储在google工作表中?

Google apps script 如何从slack对话框中获取信息并存储在google工作表中?,google-apps-script,google-sheets,slack-dialog,Google Apps Script,Google Sheets,Slack Dialog,我试图建立一个轻松的对话框,接受团队成员关于他们正在做什么的回复,并将这些信息存储在谷歌表单中。我有这个对话框,但我不知道如何使用谷歌应用程序脚本捕获谷歌工作表中的信息 我已经尝试了下面的代码,但是没有像我期望的那样在单元格A1中获得任何信息,我只是得到了松弛的HTML响应 函数doGet(e){ 返回ContentService.createTextOutput(“我还活着”); } 函数doPost(e){ var params=e.参数; var token=params.token; v

我试图建立一个轻松的对话框,接受团队成员关于他们正在做什么的回复,并将这些信息存储在谷歌表单中。我有这个对话框,但我不知道如何使用谷歌应用程序脚本捕获谷歌工作表中的信息

我已经尝试了下面的代码,但是没有像我期望的那样在单元格A1中获得任何信息,我只是得到了松弛的HTML响应

函数doGet(e){
返回ContentService.createTextOutput(“我还活着”);
}
函数doPost(e){
var params=e.参数;
var token=params.token;
var text=params.text;
var trigger_id=params.trigger_id;
var slackUrl=”https://slack.com/api/dialog.open";
如果(类型e!=='undefined'){
var ss=电子表格应用程序openById(表格ID);
sheet.getRange(1,1).setValue(JSON.stringify(e));
}
变量对话框={
“代币”:代币,
“触发器id”:触发器id,
“dialog”:JSON.stringify({
“回调id”:“ryde-46e2b0”,
“标题”:“提交松弛更新”,
“提交标签”:“更新”,
“要素”:[
{
“类型”:“文本”,
“标签”:“昨天”,
“姓名”:“昨天”,
“占位符”:“你昨天完成了什么?”
}
}
变量选项={
'method':'post',
“有效负载”:对话框,
}; 
fetchapp.fetch(slackUrl,选项);
返回ContentService.createTextOutput(“”);
} 
我没有打开对话框然后记录响应,而是得到了以下响应:


Errorbody{背景色:#fff;边距:0;填充:0;}.errorMessage{字体系列:Arial,无衬线;字体大小:12pt;字体重量:粗体;行高:150%;填充顶部:25px;}引用错误:“工作表”未定义。(第14行,文件“代码”,项目“站立表单”)
问题

您得到的HTML响应实际上是一个错误页面-如果仔细检查(或者更容易地分析),您将看到问题发生的确切原因:

ReferenceError:“工作表”未定义

解决方案

要解决此问题,您需要首先访问
工作表
(谷歌文档中的电子表格结构为:
电子表格
->
工作表
->
范围

样本

简单的一行就可以做到这一点(请注意,由于事件对象的类型始终为
object
(如果存在),因此可以创建一个快捷方式-
未定义的
doPost()
触发器函数中保护是多余的)

我还建议只存储
参数
参数
属性值,因为
e
是一个实用对象,每次请求命中应用程序时都会动态构造

参考资料

  • getSheetByName()
  • getSheets()

  • 正如您收到的消息所明确指出的:
    ReferenceError:“sheet”未定义
    -您现在只打开电子表格并将其写入
    ss
    ,但决不能通过使用一些
    电子表格
    类方法访问sa sheet来启动
    sheet
    变量(例如,使用
    getSheetByName()
      var ss = SpreadsheetApp.openById(SHEET_ID);
      var sheet = ss.getSheetByName('yourSheetName');
      sheet.getRange(1,1).setValue(JSON.stringify(e));