BCC 似乎不能作为 sendEmail 的一个选项 - 名称和回复虽然有效

问题描述

function myFunction() {
  var ss = SpreadsheetApp.getActive();
  var sheet = ss.getSheetByName("Welcome");
  var targetSheet = ss.getSheetByName("Done");
  var startRow = 2;
  var lr = sheet.getLastRow();
  var datarange = sheet.getRange(startRow,1,lr-1,6);
  var data = datarange.getValues();
  var colNumber = sheet.getLastColumn()-1;
  var delRows = [];
  for (var i = 0; i < data.length; i++) {
  var row = data[i];
  var id = row[0];
  var emailAddress = row[1];
  var date = row[2];
  var city = row[3];
  var bccmail = row[6];
  var Sender = 'XXXXXX';
  var reply = 'xxxxxx@xxxxxxx.com';
  if (emailAddress.match('@')  === null){
  continue;
  };
  var subject = row[4];
  var message = "hey " + id + ",welcome in the team " + row[5];
  MailApp.sendEmail(emailAddress,subject,message,{bcc: bccmail,name: Sender,replyTo: reply});
  var targetRange = targetSheet.getRange(targetSheet.getLastRow()+1,colNumber);
  var sourceRange = sheet.getRange(i+startRow,colNumber);
  sourceRange.copyTo(targetRange);
  delRows.push(i+startRow);
  } 
  delRows.reverse().forEach(ri=>{sheet.deleteRow(ri)});

几乎所有的脚本都可以正常工作。说到 sendEmail,我尝试遵循这些 guidelines 并使用 sendEmail(recipient,body,options)。 3 个选项中有 2 个工作正常,但 BCC 目前不起作用。你知道我做错了什么吗? BCC 可以是变量吗?

解决方法

问题出在这一行:

var bccmail = row[6];

dataRange 被定义为只有 6 列的范围。 data 是一个二维数组,其值为 dataRangerow 是单行 data 的一维数组。 JavaScript 数组索引仅从 0 开始,因此值在 row[0]row[5] 之间。

请检查您的工作表在哪一列中定义了 bcc 字符串,并从 0 开始计算索引。

参考:

Arrays in JavaScript