Google脚本:将单个用户给出的答案通过电子邮件发送到在Google云端硬盘中编译的表单

时间:2014-02-02 00:30:00

标签: email google-apps-script google-drive-api

我使用谷歌驱动器创建了一个表单。 为了向答复者提供他们所写内容的摘要,我想使用他们在表单中插入的电子邮件向每个人发送电子邮件。

我认为可以在表单结果的电子表格中安装脚本,每次记录新行时都会发送电子邮件。

我发现(在此论坛上)以下脚本,不幸的是,该电子邮件警报在某个电子表格中有修改。

function sendNotification() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var cell = ss.getActiveCell().getA1Notation();
var row = sheet.getActiveRange().getRow();
var cellvalue = ss.getActiveCell().getValue().toString();
var recipients = "me@gmail.com";
var message = '';
if(cell.indexOf('G')!=-1){ 
message = sheet.getRange('D'+ sheet.getActiveCell().getRowIndex()).getValue()
}
var subject = 'Update to '+sheet.getName();
var body = sheet.getName() + ' has been updated. Visit ' + ss.getUrl() + ' to view     the changes on row: «' + row + '». New comment: «' + cellvalue + '». For message:  «' + message + '»';
MailApp.sendEmail(recipients, subject, body);

};

这是我需要的帮助。该脚本将电子邮件发送到单个预定义地址。是否可以让脚本从相关行中的某个单元格中获取收件人电子邮件(例如,电子邮件记录在电子表格的col C中)并向他发送包含由其他单元格拍摄的文本的消息行(例如col D和E)?

1 个答案:

答案 0 :(得分:0)

使用您在代码中定义的变量(工作表,行):

//returns email address in column C
var recipient = sheet.getRange(row, 3).getValue();

//returns values in column D and E
var info1 = sheet.getRange(row, 4).getValue();
var info2 = sheet.getRange(row, 5).getValue();

请注意,这是获取值的“昂贵”方式,您最好在一次调用中将所有值作为数组获取,然后按索引引用它们,如下所示。

//get all required values in one call
var values = sheet.getRange(row, 3, 1, 3).getValues();

//define variables using array index
var recipients = values[0];
var info1 = values[1];
var info2 = values[2];