谷歌应用程序脚本-一个简单的YES在单元格在列A触发电子邮件



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

如果在A列中输入字母"Y",我需要自动触发电子邮件到预定的人员列表。理想情况下,此电子邮件将包含根据行数据(Item、vendor、total、job等)自动生成的电子邮件正文。

这是我到目前为止所写的。每次更改时,它都会发送一封电子邮件。我尝试过,但没有成功,以改进项目的触发器和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);
};

你就快成功了!

在你的if语句中:

if(cell.indexOf('A')!="Y"){ 

您需要计算两件事,首先如果用户正在编辑列A,其次如果单元格的值为"Y"。

对于第一个,您已经有cellvalue中当前单元格的值,因此只需计算cellvalue == "Y"

对于第二个,你需要计算用户是否正在编辑列A,你可以使用.getColumnIndex(),这将获得范围的索引,在这种情况下,单元格,列A将返回1,所以你计算sheet.getActiveCell().getColumnIndex() == 1

现在,只需要使用逻辑运算符&&检查两个表达式的值是否为true。

你的行应该像这样:

if(cellvalue == "Y" && sheet.getActiveCell().getColumnIndex() == 1){

最后,为了确保电子邮件仅在上述行计算结果为true时发送,将subject, bodyMailApp移动到if语句中:

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(cellvalue == "Y" && sheet.getActiveCell().getColumnIndex() == 1){
    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);
  }
};

相关内容

最新更新