我正在尝试编写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');
}
答案 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
列。然后根据发送的电子邮件-E
或Onboarding
。
要安装触发器,只需转到当前项目的触发器并添加具有以下选项的触发器:
参考