Google Script通过电子邮件发送表单值,错误:无法读取属性"时间戳"来自undefined /无法读取属性" 0"来自undefined。 我添加了两个带有两个错误的选项,脚本从exel文件接收信息。 代码如下:
function sendFormByEmail(e) {
var Subject = "Subject";
var Email = "email";
var Key = "keynumber";
var Editors = 0;
var extraColumns = 8;
if (useEditors) {
var editors = DocsList.getFileById(Key).getEditors();
if (editors) {
var notify = editors.join(',');
} else var notify = Email;
} else {
var notify = Email;
}
var s = SpreadsheetApp.getActive().getSheetByName("Form Responses 1");
if (extraColumns) {
var headers = s.getRange(1, 1, 1, extraColumns).getValues()[0];
} else var headers = s.getRange(1, 1, 1, s.getLastColumn()).getValues()[0];
var message = "";
for (var i in headers) {
//First case:
// message += headers[i] + ' = '+ s.namedValues[headers[i]].toString() + "\n\n";
//var i is "Timestamp"
//TypeError: Cannot read property "Timestamp" from undefined.
//Second case:
message += headers[i] + ' = ' + s.values[i].toString() + '\n\n';
//TypeError: Cannot read property "0" from undefined.
}
MailApp.sendEmail(notify, Subject, message);
}
我在第一种和第二种类型中有以下两个错误: 1)TypeError:无法读取属性"时间戳"来自undefined 2)TypeError:无法读取属性" 0"来自undefined。 我的错误是什么?
答案 0 :(得分:0)
这是因为您尝试访问不存在的属性,而Sheet对象似乎不包含namedValues
或values
属性,如果您想要将所有单元格添加到消息变量中,请尝试以下操作:
var s = SpreadsheetApp.getActive().getSheetByName("Form Responses 1");
if (extraColumns) {
var values = s.getRange(1, 1, s.getLastRow(), extraColumns).getValues();
} else {
var values = s.getRange(1, 1, s.getLastRow(), s.getLastColumn()).getValues();
}
var message = "";
for (var i=1; i < values.length; i++) {
for (var j=0; j < values[i].length; j++) {
message += values[0][j] + ' = ' + values[i][j] + '\n\n';
}
}
修改仅将最后一行添加到消息变量中:
var s = SpreadsheetApp.getActive().getSheetByName("Form Responses 1");
if (extraColumns) {
var values = s.getRange(1, 1, s.getLastRow(), extraColumns).getValues();
} else {
var values = s.getRange(1, 1, s.getLastRow(), s.getLastColumn()).getValues();
}
var message = "";
var lastRow = values.length-1;
for (var j=0; j < values[lastRow].length; j++) {
message += values[0][j] + ' = ' + values[lastRow][j] + '\n\n';
}
希望这有帮助