无法从一个工作表中获取特定数据并将其添加到另一个电子表格中

时间:2014-12-27 04:31:10

标签: javascript google-apps-script

@JPV帮助我创建了这个非常棒的应用程序脚本,该脚本从电子表格中提取特定数据并通过电子邮件发送给我。我一直在尝试添加功能,它会收集电子邮件的数据,并将其添加到特定电子表格Here it is的下一行。新电子表格与电子邮件的列具有相同的标题:

评估分数, 学生卡, 名称, HR, 老师, 年级, 种族, G, 埃德, AVG

我一直在搜索/搞乱这几天,我知道这个论坛上任何一个人都很容易做到这一点不是像我这样的初学者。我知道在这段代码的消息部分之后,我必须打开目标电子表格,找到最后一行,添加一行,并将识别的单元格值移动到新行,但它永远不会起作用。 :(我发布了我一直在玩的代码,但它甚至不值得它。 我们非常感谢你们的任何帮助或想法。非常感谢节日快乐! 布兰登

function assessmentAlert() {
SpreadsheetApp.getActive().getSheets()
.forEach( function (s) {
var val = s.getDataRange().getValues();
//check to see if correct cells where found ==> check the log when the script finishes
var count = 0;
//start looping through the values, first loop = rows, second loop = columns
for (var i = 0, ilen = val.length; i < ilen; i++) {
    for (var j = 0, jlen = val[0].length; j < jlen; j++) {
      //conditions: column > 8, row > 2, value should be numeric and < 0.6 and the headerrow should not have 'Sent'
        if (j > 8 && i >2 && !isNaN(parseFloat(val[i][j])) && val[i][j] < 0.6 && val[0][j] != 'Sent') {
            count += 1
           //if all conditions are met, send the email             
            var message = 'Assessment score: ' + Math.round((val[i][j] * 100) * 10) / 10 + ' %' +
                '\nStudentId: ' + val[i][0] +
                '\nName: ' + val[i][1] +
                '\nHR: ' + val[i][2] +
                '\nTeacher: ' + val[i][3] +
                '\nGrade: ' + val[i][4] +
                '\nRace: ' + val[i][5] +
                '\nG: ' + val[i][6] +
                '\nEd: ' + val[i][7] +
                '\nAVG: ' + Math.round((val[i][8] * 100) * 10) / 10 + ' %';
            var emailAddress = 'email@email.com'; // email details
            var subject = 'ALERT - Assessment score below 60% inputted.';
            MailApp.sendEmail(emailAddress, subject, message);
            s.getRange(1, j+1).setValue('Sent').setFontColor('Red');
        }
    }
}
Logger.log('number of values found:' + count);
});
}

1 个答案:

答案 0 :(得分:0)

之前'var message'添加两个新变量

var score = Math.round((val[i][j] * 100) * 10) / 10 + ' %';
var avg = Math.round((val[i][8] * 100) * 10) / 10 + ' %';

然后将var消息的第一行和最后一行更改为:

var message = 'Assessment score: ' + score +
...
'\nAVG: ' + avg;

在s.getRange(1,j + 1)...之后,访问第二个电子表格中的第一个工作表,并通过将所有值放在数组中(用逗号分隔)向该工作表附加一行

SpreadsheetApp.openById('id_of_second_spreadsheet).getSheets()[0].appendRow([score, val[i][0], ..., avg])