首页 > 解决方案 > 在应用程序脚本中使用库时,无效电子邮件:发生未定义错误,但如果我直接使用库代码,就可以了

问题描述

使用保存的版本和库时,会出现“无效电子邮件:未定义”错误。它发生在根本没有写入电子邮件的行。每个库都会发生这种情况。

我尝试在容器绑定中编写电子邮件变量。在每个库的所有变量中都有一个有效的电子邮件地址。

容器中的脚本绑定。

function autoRun(){

  Part1.sendEmail()
  Part2.sendEmail()
  Part3.sendEmail()
  Part4.sendEmail()
  Part5.sendEmail()

}

保存的库(part1)(所有其他部分与此类似)

function sendEmail() {

  var ss = SpreadsheetApp.getActiveSpreadsheet()
  var QA = ss.getSheetByName("Quality Alert");
  var QAdata = QA.getRange(3,1,QA.getLastRow() - 2,25).getValues(); 
  QAdata.forEach(function(row, i){

               var customer = row[1] ;
               var part     = row[2] ;
               var s        = row[3] ;
               var id       = row[4] ;
               var defect   = row[5] ;
               var desc     = row[6] ;
               var reject   = row[7] ;
               var ok       = row[8] ; 
               var chemA    = row[9] ; 
               var chemB    = row[10] ; 
               var chemC    = row[11] ; 
               var et       = row[12] ; 
               var fee      = row[13] ; 
               var cam      = row[14] ;
               var fqa      = row[15] ; 
               var inner    = row[16] ; 
               var ipqc     = row[17] ; 
               var legend   = row[18] ; 
               var lpsm     = row[19] ; 
               var mlb      = row[20] ; 
               var photo    = row[21] ; 
               var routing  = row[22] ; 
               var drilling = row[23] ; 
               var answer   = row[24] ;  

  var test_mail     = "testmail" ;
  var chemA_mail    = "testmail" ;
  var chemB_mail    = "testmail" ; 
  var chemC_mail    = "testmail" ; 
  var et_mail       = "testmail" ; 
  var fee_mail      = "testmail" ;
  var cam_mail      = "testmail" ;
  var fqa_mail      = "testmail" ; 
  var inner_mail    = "testmail" ; 
  var ipqc_mail     = "testmail" ; 
  var legend_mail   = "testmail" ; 
  var lpsm_mail     = "testmail" ; 
  var mlb_mail      = "testmail" ; 
  var photo_mail    = "testmail" ; 
  var routing_mail  = "testmail" ; 
  var drilling_mail = "testmail" ;
  var all_mail      = "testmail" ;    

  var body = "testinfo";

  // Only rows with data will send out an email               
  if(customer == '')
  {
  }

  // Only send email if "email sent out" column is blank
  else if(answer == '')
  {

 // Send if chemA & fee & fqa & ipqc & lpsm is ticked (Conditions for email to be sent)
    if(chemA == '✔' && fee == '✔' && fqa == '✔' && ipqc == '✔' && lpsm == '✔'){

      var recipient = [test_mail,all_mail,chemA_mail,fee_mail,fqa_mail,ipqc_mail,lpsm_mail] ;
      var subject = "Quality Alert for Chem A, FEE, FQA, IPQC & LPSM";
    }
//ERROR HAPPENS HERE
    // Send if chemA & fee & fqa & ipqc & mlb is ticked (Conditions for email to be sent)
    if(chemA == '✔' && fee == '✔' && fqa == '✔' && ipqc == '✔' && mlb == '✔'){

      var recipient = [test_mail,all_mail,chemA_mail,fee_mail,fqa_mail,ipqc_mail,mlb_mail] ;
      var subject = "Quality Alert for Chem A, FEE, FQA, IPQC & MLB";
    }

    GmailApp.sendEmail(recipient, subject, " ",{htmlBody: body});    

    // Auto adding " Email Sent"
    var email_sent = "Email Sent" ;

    //(sheet)getRange(i + [which row data starts at],[which column data will be added]).setValue(what you want to be added)
    QA.getRange(i + 3,25).setValue(email_sent);

  }// End bracket for if(answer = '')
 });// End bracket for QAdata            
} // End of Function

当我直接在容器绑定中使用库脚本时,它可以工作,但不能在单独的库中使用。

标签: google-apps-scriptgmaillibraries

解决方案


不满足条件时会出现错误。因此,如果不满足任何条件,则必须制造或模拟或确保发生某些事情。


推荐阅读