Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 谷歌脚本:根据两种不同的条件发送两封不同的电子邮件_Google Apps Script - Fatal编程技术网

Google apps script 谷歌脚本:根据两种不同的条件发送两封不同的电子邮件

Google apps script 谷歌脚本:根据两种不同的条件发送两封不同的电子邮件,google-apps-script,Google Apps Script,我正试图编写一个谷歌脚本,根据编辑的专栏内容发送两封主题不同的电子邮件。D列(开始日期)将生成一封入职电子邮件,E列将生成一封离职电子邮件。我可以发送一个或另一个(即,如果任一列更改,它将发送一封带有一个主题行的电子邮件。这是我正在使用的代码-希望得到任何帮助!谢谢-Nicole function triggerOnEdit(e) { showMessageOnUpdate(e); } function showMessageOnUpdate(e) { var range = e.ra

我正试图编写一个谷歌脚本,根据编辑的专栏内容发送两封主题不同的电子邮件。D列(开始日期)将生成一封入职电子邮件,E列将生成一封离职电子邮件。我可以发送一个或另一个(即,如果任一列更改,它将发送一封带有一个主题行的电子邮件。这是我正在使用的代码-希望得到任何帮助!谢谢-Nicole

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');

}
函数triggeroEdit(e) { showMessageOnUpdate(e); } 函数showMessageOnUpdate(e) { var范围=e范围; SpreadsheetApp.getUi().alert(“范围更新”+范围.getA1Notation()); } 函数checkEndDate(e) { var范围=e范围; if(range.getColumn()=5) { var edited_row=range.getRow(); var status=SpreadsheetApp.getActiveSheet().getRange(第5行已编辑).getValue(); { 返回编辑的_行; } } 返回0; } 函数triggeroEdit(e) { showMessageOnUpdate(e); } 函数showMessageOnUpdate(e) { var编辑行=检查结束日期(e); 如果(编辑的行>1) { SpreadsheetApp.getUi().alert(“行#“+已编辑行+“已编辑开始日期!”); } } //撰写结束日期电子邮件 函数sendEmailOnEndDate(e) { var编辑行=检查结束日期(e);
如果(编辑)_row您的目标可以通过使用可安装触发器来实现,该触发器将由编辑时的
操作触发

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
还是
E
列。然后根据这一点发送电子邮件-无论是
入职
还是
非入职

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

参考

  • )


为什么要多次声明
TriggeroEdit
?我建议您将所有OneEdit触发的函数放在同一个函数中,以便您可以管理它们何时以及以何种顺序运行。此时很难说出您想要什么。也许您可以用文字解释一下。每个函数何时运行?感谢您的帮助你愿意帮忙!老实说,我使用了这个博客的代码:但现在回想起来,我并不需要所有的onEdit功能。我只需要在编辑D列时发送一封主题为“入职”的电子邮件,以及另一封主题为“离职”的电子邮件编辑E列时发送。ale13你是我的英雄!这很有效,这就是解决方案-非常感谢!@NicoleWoods我很高兴我的解决方案对你的情况有效!:)如果你觉得有帮助,请不要忘记将答案标记为已接受,因为其他人可能会遇到同样的问题,这可能会有所帮助!干杯!