道歉,因为我知道这已被问过几次,这是我从其他问题中学到的,但是我仍然坚持并且不确定如何继续。
我试图制作一个谷歌脚本,根据单元格更改向多个人发送电子邮件通知,同时在同一行中发送电子邮件中的多个单元格值?
e.g。如果列' 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@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);
};
答案 0 :(得分: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);
}
}
结果变量('values')是一个数组,因此必须循环它以获取字符串值。对于电子邮件,您可以在单元格中存储多个电子邮件,以逗号分隔。在字符串上调用split()方法将获得一组值(电子邮件),然后您可以将其作为第一个参数传递给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")