Apps 脚本 onFormSubmit 触发器

Apps script onFormSubmit trigger

我在 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 对象似乎出了问题。任何帮助解决问题都会很棒。

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

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);
  }
}