谷歌应用脚本类型错误:无法调用未定义的方法“子字符串”
google apps script TypeError: Cannot call method "substring" of undefined
我有一个谷歌表单,提交时调用一个包含javascript .substring(start,finish)方法的"表单提交"函数。 奇怪的是,在我的测试代码中它工作正常,但是当它实际上必须使用"提交时"代码实现时,我收到一个错误,说:类型错误: 无法调用未定义的方法"子字符串"。(第 26 行,文件"代码")
这是我的测试代码,它工作正常(调用浏览器.msgBox)
function test()
{
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0]; //assumes that sheet containing header columns is first sheet
var lastRow = sheet.getLastRow();
var lastColumn = sheet.getLastColumn();
var values = SpreadsheetApp.getActiveSheet().getRange(1, 1, 1, lastColumn).getValues();
//variables with form submit data would go here but not for this testing
var dataDump = "'n'n"
var headerValue = values[0][5];
var headerValue5 = headerValue.substring(0,5);
Browser.msgBox(headerValue5);
}
此代码生成错误...
function onFormSubmit(e)
{
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0]; //assumes that sheet containing header columns is first sheet
var lastRow = sheet.getLastRow();
var lastColumn = sheet.getLastColumn();
var values = SpreadsheetApp.getActiveSheet().getRange(1, 1, 1, lastColumn).getValues();
//define variables
var timeStamp = e.values[0];
var name = e.values[1];
var email = e.values[2];
var emailSubject = "QMG periodic wRVU responses for ";
emailSubject = emailSubject + timeStamp;
var dataDump = "'n'n";
for (var i = 3; i <= e.values.length; i++)
{
var headerValue = values[0][i];
var responseValue = e.values[i];
var responseValue5 = responseValue.substring(0,5); //error here !!!!!!
i++; //increment i to get detailsValue
var detailsValue = e.values[i];
dataDump = dataDump + headerValue;
dataDump = dataDump + ":'n'n";
dataDump = dataDump + responseValue;
dataDump = dataDump + "'n";
dataDump = dataDump + detailsValue;
dataDump = dataDump + "'n'n*********************'n'n";
}
MailApp.sendEmail(email, emailSubject, dataDump);
}
删除带有注释"//error here !!!!!"的行工作正常,所以我知道它正在正常读取数组数据。 计划是使用 .substring() 来确定一些格式,所以希望让它工作。
提前感谢...
这里本身没有专业人士,但我想我对问题是什么有一种预感。
var array = ["aaa", "bbb", "ccc"];
for (var i = 0; i <= array.length; i++) {
console.log(array[i]);
}
看看运行上面的代码时,我会得到一个控制台.log最后用undefined
,由于i <= array.length
.
在 undefined
上运行字符串方法(如 .substring
)会引发错误。
将<=
更改为<
,您应该很高兴。
相关文章:
- Javascript,有没有一种方法可以将数组写成没有逗号或空格的单个文本字符串
- 在JavaScript中拆分日期字符串的更好方法是什么
- 用Javascript重新格式化复杂文本日期字符串的更好方法
- 用javascript修复这个JSON对象字符串最干净的方法是什么
- jQuery字符串使用split()方法在空格后拆分字符串
- 使用查询字符串方法清除浏览器缓存
- 检查变量是否为字符串的简单方法
- 使用.join方法将数组转换为不带逗号的字符串
- Javascript:不使用.split()方法拆分字符串
- 使用子字符串方法时应用程序挂起的原因
- 如何更改字符串的查找方法
- 什么时候字符串不是字符串?当它没有 include() 方法时
- get没有方法“writefile”,即使输入是一个字符串
- 在JavaScript中,有没有一种方法可以解析JSON,将数字转换为字符串
- 使用 MVC 删除 JavaScript 中硬编码字符串 Asp.Net 最佳方法
- 使用 eval 从字符串创建函数的不同方法
- Javascript CharAt 方法不适用于字符串
- Javascript方法以字符串形式返回方法代码
- 为什么String的方法.字符串字面值可用的原型
- 如何在javascript参数函数中传递PHP post方法字符串