A列单元格中的简单YES触发EMAIL

时间:2016-08-15 08:19:25

标签: google-apps-script google-sheets google-sheets-api

我已经在论坛中搜索过,答案很可能就在那里,但我需要一些帮助。

如果字母" 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);
};

1 个答案:

答案 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){ subjectbody

MailApp