Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.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
Javascript 谷歌脚本-从下拉列表发送电子邮件_Javascript_Google Apps Script - Fatal编程技术网

Javascript 谷歌脚本-从下拉列表发送电子邮件

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

我正在尝试修复我在网上找到的一个代码。我的目标是,一旦“摘要”选项卡上的“I”列被编辑,并使用下拉列表“approved”为工作表发送电子邮件给D列中姓名的人。 该电子邮件位于“范围”选项卡中。这就是我目前所拥有的

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
    。该函数与您提供的函数相同。未使用您提供的其余函数
参考: