Google Apps Script: TypeError: Cannot read property 'values' of undefined (line 3, file "Code")

Google Apps Script: TypeError: Cannot read property 'values' of undefined (line 3, file "Code")

首先,感谢 NEWAZA 编写了这么棒的代码!

其次,请参考Whosebuglink/question。

 function onSubmit(e) {
  Logger.log(JSON.stringify(e.values))
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(`onSubmit`)
  const [timestamp,emailAddress,companyName,_,phoneNumber,firstName,lastName,locations,city,state,zipCode,dateRequested,...rest] = e.values;
  locations.split(`,`).forEach(i => sheet.appendRow([firstName, lastName, i.trim(), city, state, zipCode, dateRequested]))
}

最后,我在代码中遇到错误。另外,如果我想向 Google 表单添加新的列或问题,是否会像在脚本中添加 header 的文本和其他常量一样简单?

通常,您收到的错误表明没有 eevent object 传递给函数。我的猜测是您试图 运行 在表单响应之外使用此功能,这是设计所要求的。 (该函数利用来自表单响应的值,没有表单响应 - 没有值)。

关于 adding/deleting 问题的此代码的最佳维护是确保每个 constant/variable 对应于表单响应中的正确值。

查看表单响应中的每个索引、问题和答案的一个便捷技巧是将以下代码段添加到 onSubmit() 函数的顶部:

function onSubmit(e) {

  Object.entries(e.namedValues).forEach(([key, value], index) => {
    Logger.log(`[${index}] "${key}" : "${value}"`) 
  })

  // Rest of code goes here.

}

提交回复后,您可以检查Execution Logs并查看您的constants/variables应该如何对齐。

基本上,您的 constants/variables 必须 等于响应答案。

希望对您有所帮助!如果我遗漏了什么,或者您需要进一步的解释,请告诉我。