【问题标题】:Error when using Time trigger in Google Script在 Google Script 中使用时间触发器时出错
【发布时间】:2020-08-08 01:38:49
【问题描述】:

我正在尝试为 google 脚本设置按计划运行的时间触发器,但出现以下错误。我正在尝试运行一个脚本,它结合了 3 个其他脚本。

当我手动运行它时,所有脚本都可以正常工作,并且可以毫无问题地触发电子邮件。

错误:

Exception: Invalid email: Internal
    at sendFirstEmail(IntCode:65:13)

代码行(其中有 3 行,行号变化不大,我将其与“组合”脚本结合使用)- IntCode.gs

function getDataSheet() {

  sheet = SpreadsheetApp.getActiveSheet();

  startRow = 2;  // First row of data to process
  numRows = 200;   // Number of rows to process
  startCol = 1;  //First column of data to process
  numCols = 21;    // Number of columns to process 
  
  var dataRange = sheet.getRange(startRow, startCol, numRows, numCols);

  // Fetch values for each row in the Range.
  var data = dataRange.getValues();  

  return data;  
}

function sendFirstEmail() {
  var complete = "";
  var first = "Yes";
        
  var data = getDataSheet();
  
  for (var i = 0; i < data.length; i++) {
    
    var row = data[i];
    
    var isFirst = row[18];
    var isComplete = row[11];
    var user = row[0];
    var detail = row[1];
    var description = row[2];
    var period = row[3];
    var name_1 = row[4];
    var to_email_1 = row[5];
    var to_email_2 = row[6];
    var cc_email_1 = row[7];
    var cc_email_2 = row[8];
    var cc_email_3 = row[9];
    var email_1 = "email ID";
    var date = row[10];
                
    if(isFirst == first && isComplete == complete ) {
  

      var to_email_1 = row[5];
      var to_email_2 = row[6];
      var cc_email_1 = row[7];
      var cc_email_2 = row[8];
      var cc_email_3 = row[9];
      var email_1 = "name.lastname@gmail.com";
      var period = row[3];
      var message = HtmlService.createHtmlOutputFromFile('FirstMail').getContent();
      var date = Utilities.formatDate( new Date(row[10]), "GMT" , "dd/MMM/yyyy" );
      var file = row[12];
      
      message = message.replace("%user", user);
      message = message.replace("%detail", detail);
      message = message.replace("%description", description);
      message = message.replace("%period", period);
      message = message.replace("%name_1", name_1);
      message = message.replace("%date", date);
      message = message.replace("%file", file);
      
    MailApp.sendEmail({
      name: 'display name',
      to: to_email_1 + ", " + to_email_2,
      replyTo: email_1,
      cc: email_1 + ", " + cc_email_1 + ", " + cc_email_2 + ", " + cc_email_3,
      subject: "[TEST] " + detail + " on " + date,
      htmlBody: message
    });
      
      
    }
  }
}

我正在尝试使用时间触发器设置的组合脚本 (combine.gs)。

function combine() {
 var ss = SpreadsheetApp.openById("google sheet ID");
// https://docs.google.com/spreadsheets/d/id_is_here/
var sh = ss.getSheetByName("Sheet1"); // name of the actual sheet ("Sheet 1" for example)  
  Logger.log('combine ran!');
  sendFirstEmail();
  sendSecondEmail();
  sendFinalEmail();
}

【问题讨论】:

  • 第 65 行是哪一行? sendInitialEmail 函数在哪里?
  • 道歉。编辑了问题。第 65 行是MailApp.sendEmail({
  • AFAICT 电子邮件格式无效。提供调试详细信息。有关“疑难解答”,请参阅 tag info page
  • 是邮件格式还是MailApp.sendEmail函数的设置方式?因为我没有;手动触发时不会出现此错误。而且我的电子邮件格式是正确的。对不起,我对这一切都不熟悉,所以很难把它整理好。

标签: google-apps-script google-sheets


【解决方案1】:

documentation所写,

例外:无效电子邮件:内部 在 sendFirstEmail(IntCode:65:13)

表示Internal 不是有效的电子邮件。考虑回溯并记录第 5 行和第 6 行:console.log(row[5])

【讨论】:

  • 点赞var to_email_1 = row[5]; console.log(row[5]; var to_email_2 = row[6]; console.log(row[6];
  • 所以我现在手动运行“Combine”脚本(其中有sendFirstEmailsendSecondEmail 等),它给出了上述错误。但是,当我只运行“sendFirstEmail”脚本时,我没有收到上述问题中的错误消息。也使用了console.log(row[5]),它可以很好地显示电子邮件地址。但在日志中,中间有空白行。
  • @Spear 然后删除空白行。另外,您的工作表中是否有任何名为“内部”的内容?
  • 没有什么是内部的。奇怪的是,它现在开始起作用了。我只是再次删除并粘贴了代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-03
  • 2015-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多