我在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
对象出现了问题。任何帮助排除故障都会很棒。
答案 0 :(得分:-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);
}
}