2017-05-31 135 views
0

道歉,因为我知道这已被问了几次,我从其他问题了解到,但我仍然卡住,不知道如何继续。发送电子邮件从谷值电子表格与其他邮件列

我试图做一个谷歌脚本来发送一个电子邮件通知给更多的一个人,基于一个单元格的变化,也在电子邮件中发送同一行中的多个单元格值?

例如如果'C'列发生变化,我可以发送一封电子邮件,其中列'A'和'B'的数据在列'C'的变化的同一行中发送。

这是我一直在试图玩的脚本,但不知道如何添加多个电子邮件以及来自两个以上单元格的值。

function sendNotifications() { 
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 = [email protected]"; 
var message = ''; 
var cellA = '' 
if(cell.indexOf('B')!=-1){ 
message = sheet.getRange('A'+ sheet.getActiveCell().getRowIndex()).getValue() 
} 
var subject = 'Update to '+sheet.getName(); 
var body = + cellvalue + '». For message: «' + message + '»'; 
MailApp.sendEmail(recipients, subject, body); 
}; 
+0

您可以通过'''分隔地址发送给多个收件人。从另一个单元获取数据可以通过[getRange()](https://developers.google.com/apps-script/reference/spreadsheet/sheet#getRange(Integer,Integer))完成 – Casper

回答

1

下面检查编辑过的细胞是在C列中,并且如果满足条件,则得到的值用于从所述编辑的行的列A和B中的代码。在Google Apps脚本中,onEdit()是内置函数,当您在电子表格中进行更改时会自动触发。在“E”参数表示事件的对象,可检查,以获取有关在事件发生

function onEdit(e){ 

    var editRange = e.range; // e is the event object generated by the Edit event 
    var editRow = editRange.getRow(); // get row and column for the edited cell 
    var editCol = editRange.getColumn(); 


    var sheet = SpreadsheetApp.getActiveSpreadsheet() 
          .getSheetByName("Sheet1"); // put your sheet name between the brackets 

    if (editCol == 3) { // checking if the edited cell was in column C 

     var range = sheet.getRange(editRow, 1, 1, editCol - 1); // Take 1st cell in the edited row and make it span 1 row and 2 columns 
     var values = range.getValues(); // get values array for the range 
     Logger.log(values); 

    } 

} 

所得变量(“价值”)的上下文中更详细是一个数组,所以必须循环通过它获取字符串值。至于电子邮件,您可以将多个电子邮件存储在单元格中,并用逗号分隔。对字符串调用split()方法将获得一组值(电子邮件),然后您可以将其作为第一个参数传递给sendEmail方法。

var cellValue = "[email protected],[email protected],[email protected]"; 
    var recipients = cellValue.split(","); 
    MailApp.sendEmail(recipients, "From google-apps-script", "hello from google apps script") 
+0

感谢Anton的回复,那个脚本似乎在任何被编辑的单元格上发送一封电子邮件,而不管它的C列是什么?另外,如何获得发送电子邮件正文内C列旁边的列(例如A和B)?如“你好列(一个值),(b值)已更新!” –

+0

请花一些时间阅读Google Apps脚本文档并理解JavaScript的基本知识。否则,它看起来像你希望有人为你做所有的编码,这不是StackOverflow的用途。 sendEmail()方法中的最后一个参数是电子邮件的主体,您可以通过连接单元格值中的字符串来形成该电子邮件。您也可以将这些代码捆绑在一起,并仅在编辑的值在列3(C)中时发送电子邮件。 –

相关问题