Javascript 谷歌脚本-从下拉列表发送电子邮件
我正在尝试修复我在网上找到的一个代码。我的目标是,一旦“摘要”选项卡上的“I”列被编辑,并使用下拉列表“approved”为工作表发送电子邮件给D列中姓名的人。 该电子邮件位于“范围”选项卡中。这就是我目前所拥有的Javascript 谷歌脚本-从下拉列表发送电子邮件,javascript,google-apps-script,Javascript,Google Apps Script,我正在尝试修复我在网上找到的一个代码。我的目标是,一旦“摘要”选项卡上的“I”列被编辑,并使用下拉列表“approved”为工作表发送电子邮件给D列中姓名的人。 该电子邮件位于“范围”选项卡中。这就是我目前所拥有的 var admin_email='taniapeche@gmail.com'; function triggerOnEdit(e) { sendEmailOnApproval(e); } function checkStatusIsApproved(e) { var shee
var admin_email='taniapeche@gmail.com';
function triggerOnEdit(e)
{
sendEmailOnApproval(e);
}
function checkStatusIsApproved(e)
{ var sheet = SpreadsheetApp.getActive().getSheetByName('Summary');
var range = e.range;
if(range.getColumn() <= 9 &&
range.getLastColumn() >=9 )
{
var edited_row = range.getRow();
var status = SpreadsheetApp.getActiveSheet().getSheetName('Summary').getRange(edited_row,9).getValue();
if(status == 'Approved')
{
return edited_row;
}
}
return 0;
}
function sendEmailOnApproval(e)
{ var sheet = SpreadsheetApp.getActive().getSheetByName('Range');
var approved_row = checkStatusIsApproved(e);
if(approved_row <= 0)
{
return;
}
sendEmailByRow(approved_row);
}
function sendEmailByRow(row)
{
var values = SpreadsheetApp.getActiveSheet().getSheetName('Range').getRange(row,1,row,5).getValues();
var row_values = values[0];
var mail = composeApprovedEmail(row_values);
//SpreadsheetApp.getUi().alert(" subject is "+mail.subject+"\n message "+mail.message);
MailApp.sendEmail(admin_email,mail.subject,mail.message);
}
function composeApprovedEmail(row_values)
{
var first_name = row_values[1];
var last_name = row_values[2];
var email = row_values[3];
var message = "The following mileage is approved: "+first_name+" "+last_name+
" email "+email;
var subject = "Mileage approved "+first_name+" "+last_name
return({message:message,subject:subject});
}
var admin\u email='1〕taniapeche@gmail.com';
函数triggeroEdit(e)
{
发送电子邮件批准(e);
}
功能检查状态已批准(e)
{var sheet=SpreadsheetApp.getActive().getSheetByName('Summary');
var范围=e范围;
if(range.getColumn()=9)
{
var edited_row=range.getRow();
var status=SpreadsheetApp.getActiveSheet().getSheetName('Summary').getRange(第9行已编辑).getValue();
如果(状态=‘已批准’)
{
返回编辑的_行;
}
}
返回0;
}
函数sendEmailOnApproval(e)
{var sheet=SpreadsheetApp.getActive().getSheetByName('Range');
var approved_row=检查状态已批准(e);
如果(approved_row首先,因为您希望脚本发送电子邮件(此操作需要您的授权),您必须安装编辑触发器,或者。如果以编程方式安装,您可以通过运行此函数安装触发器一次:
函数createTriggeroEdit(e){
var ss=SpreadsheetApp.getActive();
ScriptApp.newTrigger(“sendEmailOnApproval”)
.前页(ss)
.onEdit()
.create();
}
因此,每次编辑电子表格时,都会启动函数sendmailonapproval
。该函数可以是以下内容(查看内联注释以了解详细说明):
函数sendEmailOnApproval(e){
//使用事件对象获取编辑的范围和工作表:
var范围=e范围;
var editedSheet=range.getSheet();
var textToSearch=“Approved”//设置将导致发送电子邮件的值
//检查编辑的单元格是否在第一列,其值是否为“已批准”,其工作表是否为“汇总”:
if(range.getColumn()==9&&range.getValue()==textToSearch&&
editedSheet.getName()=“摘要”){
var rowIndex=range.getRow();//获取已编辑行的索引
var name=editedSheet.getRange(rowIndex,4).getValue();//在D列中获取相应的名称
var rangeValues=e.source.getSheetByName(“范围”).getDataRange().getValues();//获取工作表“范围”中的值
//遍历“范围”中的行,查找从工作表“摘要”检索到的名称
对于(变量i=0;i
笔记:
- 此示例中调用了函数
composeApprovedEmail
。该函数与您提供的函数相同。未使用您提供的其余函数
参考: