解决通过 API 发送电子邮件的未知错误

resolving unknown error to send email through API

我是 API 脚本的新手,正在尝试向 Sheet sendTo!B2 中列出的地址发送电子邮件。 组成的消息在 composeMessage!A2 之后。我的脚本给出了一个未知错误。我究竟做错了什么?我将不胜感激

函数 composeNsend()

{
  // Fetch the message
  var messageRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("composeMessage").getRange("A2"); 
  var message = messageRange.getValue();
  {
    // Fetch the email address
    var emailRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("sendTo").getRange("B2");
    var emailAddress = emailRange.getValue();
  
    // Send Email.
    var message = message;
    var subject = 'ALERT for New 365d Low';
    MailApp.sendEmail(emailAddress, subject, message);
  }
}

我写的消息确实有空行

谢谢

您的代码中间有一些额外的括号。删除它们,该功能将起作用。编辑代码以遍历行并标记已发送的行。下面的代码对我有用:

function composeNsend()

{
 
  let curr_ss = SpreadsheetApp.getActiveSpreadsheet();
  let subject = 'ALERT for New 365d Low';

  let message_sheet = curr_ss.getSheetByName("composeMessage");
  let last_message_row = message_sheet.getLastRow();

  //get 2D array of values
  let message_array = message_sheet.getRange("A2:A"+last_message_row.toString()).getValues();
  //convert to 1D array
  let messages = message_array.map(itm=>itm[0]);
  
  let email_sheet = curr_ss.getSheetByName("sendTo")
  let last_email_row = email_sheet.getLastRow();
  
  //get 2D array of values
  let email_array = email_sheet.getRange("B2:B"+last_email_row.toString()).getValues();
  //convert to 1D array
  let emails =email_array.map(itm=>itm[0]);
  //get flags column
  let flags = email_sheet.getRange("C2:C"+last_message_row.toString()).getValues().map(itm => itm[0]);
  //empty array for new flag values
  let new_flags = [];
  
  //choose lowest of last rows in messages and emails, don't send emails without body or email address
  let last_row = Math.min(last_email_row,last_message_row);
  
  //for loop to send emails, add flag on column C for each email sent
  //subtract 1 from last row because array starts from second row
  for(let i=0; i<last_row-1; i++){
    let curr_flag = flags[i];

    //send email only for rows without sent flag
    if(curr_flag != 'sent'){
      let message = messages[i];
      let emailAddress=emails[i];
      MailApp.sendEmail(emailAddress, subject, message);
      }
    new_flags.push(['sent']);
    }

  //write new flags to sheet 
  email_sheet.getRange("C2:C"+last_row.toString()).setValues(new_flags);
}