发送电子邮件从单元格的谷歌表,与电子邮件中的其他列

道歉,因为我知道这已被问了几次,我从其他问题了解到,但我仍然卡住,不知道如何继续。

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

例如,如果“C”列发生变化,我可以发送一封电子邮件,其中包含“C”列中“A”和“B”列中的数据。

这是我一直在试图玩的脚本,但不知道如何添加多个电子邮件,并从另外两个单元格的值。

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@domain.com"; 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); }; 

下面的代码检查编辑的单元格是否在列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); } } 

结果variables('values')是一个数组,所以你必须通过循环来获取string值。 至于电子邮件,您可以将多个电子邮件存储在单元格中,并用逗号分隔。 对string调用split()方法将获得一组值(电子邮件),然后您可以将其作为第一个parameter passing给sendEmail方法。

  var cellValue = "email@example.com,anotheremail@example.com,yetanotheremail@example.com"; var recipients = cellValue.split(","); MailApp.sendEmail(recipients, "From google-apps-script", "hello from google apps script")