Google Script通过电子邮件发送表单值,错误:无法从undefined中读取属性“Timestamp”/无法从undefined中读取属性“0”。我添加了两个带有两个错误的选项,脚本从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:无法从未定义读取属性“Timestamp”2)TypeError:无法从undefined读取属性“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';
}
希望这可以帮助