Google脚本:根据2种不同的条件发送两封不同的电子邮件

时间:2020-02-27 17:45:26

标签: google-apps-script

我正在尝试编写Google脚本,以根据已编辑的列发送两封主题不同的电子邮件。 D列(开始日期)将生成入职电子邮件,E列将生成离职电子邮件。我可以发送一个或另一个(即,如果其中任何一列发生更改,它都会发送一封包含主题行的电子邮件。这是我正在使用的代码-希望有帮助!谢谢-妮可

function triggerOnEdit(e)
{
  showMessageOnUpdate(e);
}

function showMessageOnUpdate(e)
{
  var range = e.range;

  SpreadsheetApp.getUi().alert("range updated " +   range.getA1Notation());  
}

function checkEndDate(e)
{
  var range = e.range;

  if(range.getColumn() <= 5 && 
     range.getLastColumn() >=5 )
  {
    var edited_row = range.getRow();

    var status = SpreadsheetApp.getActiveSheet().getRange(edited_row,5).getValue();
    {
      return edited_row;
    }
  }
  return 0;
}


function triggerOnEdit(e)
{
  showMessageOnUpdate(e);
}
function showMessageOnUpdate(e)
{
  var edited_row = checkEndDate(e);
  if(edited_row > 1)
  {
    SpreadsheetApp.getUi().alert("Row # "+edited_row+" start date edited!");
  }
}

//COMPOSE THE END DATE EMAIL

function sendEmailOnEndDate(e)
{
  var edited_row = checkEndDate(e);

  if(edited_row <= 0)
  {
    return;
  }

  sendEmailByRow(edited_row);
}

function sendEmailByRow(row)
{
  var values = SpreadsheetApp.getActiveSheet().getRange(row,1,row,4).getValues();
  var row_values = values[0];

  var mail = composeEndDateEmail(row_values);

  //Uncomment this line for testing
  //SpreadsheetApp.getUi().alert(" subject is "+mail.subject+"\n message "+mail.message);

  MailApp.sendEmail(admin_email,mail.subject,mail.message);
}


function composeEndDateEmail(row_values)
{
  var first_name = row_values[0];

  var last_name = row_values[1];

  var email = row_values[2];

  var end_date = row_values [4];

  var message = "OFFBOARDING: "+end_date+" "+first_name+" "+last_name+
    " email "+email;
  var subject = "OFFBOARDING: "+end_date+" "+first_name+" "+last_name

  return({message:message,subject:subject});
}
//Call Compose End Date Trigger

function triggerOnEdit(e)
{
  sendEmailOnEndDate(e);
}

var admin_email='myemail@.gmail.com';

function sendTestEmail()
{
  MailApp.sendEmail(admin_email,'offboarding test email from script ',
'Offboarding test');

}

1 个答案:

答案 0 :(得分:1)

您可以通过使用可安装的触发器来实现您的目标,该触发器由req.flash('success', "Post added"); req.session.save(() => res.redirect('/dashboard')); 动作触发。

on edit

以上代码段在工作表中收集了已编辑的范围,并检查它是function onEditInst(e) { var range = e.range; if (range.getColumn() == 4) MailApp.sendEmail("mail@address.com", "Onboarding Email", "Column D has been edited"); else if (range.getColumn() == 5) MailApp.sendEmail("mail@address.com", "Offboarding Email", "Column E has been edited"); } 还是D列。然后根据发送的电子邮件-EOnboarding

要安装触发器,只需转到当前项目的触发器并添加具有以下选项的触发器:

trigger settings

参考