Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.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 GoogleSheets-根据单元格匹配对错发送电子邮件_Google Apps Script_Google Sheets_Gmail_Google Sheets Api_Spreadsheet - Fatal编程技术网

Google apps script GoogleSheets-根据单元格匹配对错发送电子邮件

Google apps script GoogleSheets-根据单元格匹配对错发送电子邮件,google-apps-script,google-sheets,gmail,google-sheets-api,spreadsheet,Google Apps Script,Google Sheets,Gmail,Google Sheets Api,Spreadsheet,我不经常使用谷歌表单,主要处理谷歌表单的脚本编辑器。我们已经从各种表格中创建了一个数据库,这些表格填写在一个电子表格中,我想根据最近的行更新向特定经理发送电子邮件通知,行更新将从表格提交中更新。下面是我想让它做的: 如果p列中的单元格与“FALSE”匹配: 发送电子邮件 将收件人字段设置为“director1@gmail.com“如果第J列中的单元格与单词“Building 1”匹配” 将CC字段设置为“manager1@gmail.com如果第I列中的单元格与单词“Department 1”

我不经常使用谷歌表单,主要处理谷歌表单的脚本编辑器。我们已经从各种表格中创建了一个数据库,这些表格填写在一个电子表格中,我想根据最近的行更新向特定经理发送电子邮件通知,行更新将从表格提交中更新。下面是我想让它做的:

如果p列中的单元格与“FALSE”匹配:

  • 发送电子邮件
  • 将收件人字段设置为“director1@gmail.com“如果第J列中的单元格与单词“Building 1”匹配”
  • 将CC字段设置为“manager1@gmail.com如果第I列中的单元格与单词“Department 1”匹配
如果p列与“TRUE”匹配,则不必执行任何操作

function triggerOnEdit(e)
{
  alertManagers(e);
}


function checkClearance(e)
{
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = spreadsheet.getSheetByName("Calculations");
  var value = sheet.getRange("P:P").getValue();
  var range = sheet.getRange(1, 1, sheet.getLastRow(), 1); //understands spreadsheet
  
  if(range.getColumn() <= 16 && 
     range.getLastColumn() >=16 )
  {
    var edited_row = range.getRow();
    
    var approval = SpreadsheetApp.getActiveSheet().getRange(edited_row,16).getValue();
    if(approval == 'FALSE')
    {
      return edited_row;
    }
  }
  return 0;
}



function alertManagers(e)
{
  var clearance_row = checkClearance(e);
  
  if(clearance_row <= 0)
  {
    return;
  }
  
  sendEmailByRow(clearance_row);
}

function sendEmailByRow(row)
{
  var values = SpreadsheetApp.getActiveSheet().getRange(row,1,row,16).getValues();
  var row_values = values[0];
  
  var mail = composeAlertEmail(row_values);
  var manageremail='test@gmail.com';

  //Uncomment this line for testing
  //SpreadsheetApp.getUi().alert(" subject is "+mail.subject+"\n message "+mail.message);
  
  MailApp.sendEmail(manageremail,mail.subject,mail.message);
  

}



function composeAlertEmail(row_values)
{
  var name = row_values[6];
  
  var email = "test@gmail.com";

  var message = "Good day, \n The following employee does not have clearance to enter the building: "+name+
    " email "+email;
  var subject = "Employee Not Cleared: "+name+" "
  
  return({message:message,subject:subject});
}
函数triggeroEdit(e) { 高级管理人员(e); } 功能检查间隙(e) { var电子表格=SpreadsheetApp.getActiveSpreadsheet(); var sheet=电子表格.getSheetByName(“计算”); var值=sheet.getRange(“P:P”).getValue(); var range=sheet.getRange(1,1,sheet.getLastRow(),1);//电子表格 if(range.getColumn()=16) { var edited_row=range.getRow(); var approval=SpreadsheetApp.getActiveSheet().getRange(第16行编辑)。getValue(); 如果(批准=='FALSE') { 返回编辑的_行; } } 返回0; } 职能经理(e) { var间隙=检查间隙(e); 如果(间隙)\行解决方案: 以下是您正在寻找的内容:

function triggerOnEdit(e) {
sendEmails(e)
}

function sendEmails(e){
  const row = e.range.getRow();
  const col = e.range.getColumn();
  const as = e.source.getActiveSheet();
  const subject = "This is the subject of the email";
  const body = "This is the body of the email";
  const to = "director1@gmail.com";
  const cc = "manager1@gmail.com";
  
  if(as.getName() == "Calculations" && col == 16 && as.getRange(row,col).getDisplayValue() == "FALSE") {  

   if (as.getRange(row,10).getValue()=="Building 1"){

      if(as.getRange(row,9).getValue()=="Department 1"){
   
         MailApp.sendEmail({to:to ,subject: subject,body:body,cc:cc});
      }
      else {
         MailApp.sendEmail({to: to,subject: subject,body:body});
      }
   
   }      
  }
}
我假设如果J列1号楼不匹配,即没有收件人,则不会发送电子邮件

不要忘记将
triggeroEdit(e)
添加到当前项目的触发器:


出于文档原因,请接受答案或提供您的反馈,以便修改答案并解决您的问题。只需单击答案左侧的勾选按钮即可。