Google Script通过电子邮件发送表单值,错误:无法从undefined读取属性“Timestamp”/无法从undefined读取属性“0”

问题描述 投票:1回答:1

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”。我的错误是什么?

javascript
1个回答
0
投票

那是因为你试图访问一个不存在的属性,似乎Sheet对象不包含namedValuesvalues属性,如果你想将所有单元格添加到消息变量,试试这个:

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'; 
}

希望这可以帮助

© www.soinside.com 2019 - 2024. All rights reserved.