【问题标题】:Apps script onFormSubmit trigger应用程序脚本 onFormSubmit 触发器
【发布时间】:2016-06-10 15:09:50
【问题描述】:

我在 Google 表单的末尾有以下代码。表单中的第一个值是一个字符串,我试图将其用作将要创建的文件的名称。只是在自己提交假表格时尝试测试一下。我知道触发器本身是基于我的第一行代码(暂时注释掉)工作的。我正在尝试解决问题所在。

    Function onFormSubmit(e) {
     // this line works var NewSpreadSheets = SpreadsheetApp.Create("testing");
     var AnswerObject = e.namedValues;
     var DirectoryName = AnswerObject[0][0]; //toString() necessary??
     if (DirectoryName) {
     var ssNew = SpreadsheetApp.create("Empty");
    ssNew.getRange('A1').setValue(DirectoryName);
    } 

编辑:如果我尝试AnswerObject['Directory'][0],同样的事情会发生。

代码没有响应if 语句,并且经过一些其他放置代码行的测试后,我知道它会起作用,我的e.namedValues 对象似乎出了点问题。任何故障排除帮助都会很棒。

【问题讨论】:

  • 创建触发器的屏幕会提供失败的电子邮件通知。将其设置为“立即”。电子邮件将包含发生错误的行和错误消息。

标签: google-apps-script triggers google-forms


【解决方案1】:

变量 AnswerObject 是您将其命名为 对象,您不会使用索引而是使用名称访问对象内容。
您需要将 DirectoryName 设置为您感兴趣的问题的名称。
例如:我的表单问题之一是“目录名称”,所以我将这样设置 directoryName:var DirectoryName = AnswerObject["name of the directory"]
您还应该使用Logger.log() 来检查正在发生的事情,这将节省您的时间,这比在电子表格中写东西更有效
JS 变量中的最后一件事以小写字母开头,它不会破坏您的代码,但它是一种约定(对于“函数”也是如此)

function onFormSubmit(e) {
  Logger.log(JSON.stringify(e));
  var AnswerObject = e.namedValues;
  Logger.log(AnswerObject);
  var directoryName = AnswerObject[0];
  Logger.log(directoryName); // this is undefined as there is nothing at the index 0
  //var DirectoryName = AnswerObject[0][0]; //toString() necessary??
  if (directoryName) {
    Logger.log("in it"); // never triggered
    var ssNew = SpreadsheetApp.create("Empty");
    ssNew.getRange('A1').setValue(directoryName);
  }
}

【讨论】:

  • 问题是我不能在不提交真实表单的情况下测试“e”值,所以在控制台中记录值是行不通的。我还在原帖中提到我尝试了这两种对象方法。
猜你喜欢
  • 1970-01-01
  • 2023-03-03
  • 2021-05-15
  • 1970-01-01
  • 2014-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-01
相关资源
最近更新 更多