我已经在论坛中搜索过,答案很可能就在那里,但我需要一些帮助。
如果字母" Y"在A列输入,我需要一个自动电子邮件触发到预定的人员列表。理想情况下,此电子邮件将根据行数据(项目,供应商,总计,工作等)包含自动生成的电子邮件正文。
这是我到目前为止所写的内容。它每隔时间发送一封电子邮件我做出更改。我已经尝试过,但没有成功完善项目的触发器和if (Index of)
位。
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('A')!="Y"){
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);
};
答案 0 :(得分:2)
你快到了!
在if
声明中:
if(cell.indexOf('A')!="Y"){
您需要评估两件事,首先是用户正在编辑A列,第二件是单元格的值是否为“Y”。
对于第一个,您已经拥有cellvalue
中当前单元格的值,因此只需评估cellvalue == "Y"
。
对于第二个,您需要评估用户是否正在编辑A列,您可以使用.getColumnIndex()
这将得到范围的索引,在这种情况下是单元格,A列将返回{{ 1}},因此您评估1
现在,您只需要使用logical operator &&来检查两个表达式是否都为真。
你的行应该是这样的:
sheet.getActiveCell().getColumnIndex() == 1
最后,为了确保仅在上面的行评估为true时才发送电子邮件,请在if语句中移动if(cellvalue == "Y" && sheet.getActiveCell().getColumnIndex() == 1){
,subject
和body
:
MailApp