Google apps script 谷歌脚本:根据两种不同的条件发送两封不同的电子邮件
我正试图编写一个谷歌脚本,根据编辑的专栏内容发送两封主题不同的电子邮件。D列(开始日期)将生成一封入职电子邮件,E列将生成一封离职电子邮件。我可以发送一个或另一个(即,如果任一列更改,它将发送一封带有一个主题行的电子邮件。这是我正在使用的代码-希望得到任何帮助!谢谢-NicoleGoogle apps script 谷歌脚本:根据两种不同的条件发送两封不同的电子邮件,google-apps-script,Google Apps Script,我正试图编写一个谷歌脚本,根据编辑的专栏内容发送两封主题不同的电子邮件。D列(开始日期)将生成一封入职电子邮件,E列将生成一封离职电子邮件。我可以发送一个或另一个(即,如果任一列更改,它将发送一封带有一个主题行的电子邮件。这是我正在使用的代码-希望得到任何帮助!谢谢-Nicole function triggerOnEdit(e) { showMessageOnUpdate(e); } function showMessageOnUpdate(e) { var range = e.ra
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我很高兴我的解决方案对你的情况有效!:)如果你觉得有帮助,请不要忘记将答案标记为已接受,因为其他人可能会遇到同样的问题,这可能会有所帮助!干杯!