首页 > 解决方案 > 抄送部分一次发送一封电子邮件,然后多发到第一封

问题描述

所以google appscript中的以下代码工作正常,除了我刚刚添加的cc部分,代码后描述的问题


function getSheetID(name){
 var ss = SpreadsheetApp.getActive().getSheetByName(name)
 var sheetID = ss.getSheetId().toString() 
 return sheetID
}

function DISCHEMEMAILS() {

//NEWEST PRODUCTS CODE
  
  SpreadsheetApp.getActiveSpreadsheet().getSheetByName("DISCHEM LINES CHECK").activate();
  
  var ssID = SpreadsheetApp.getActiveSpreadsheet().getId();

  var sheetName = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getName();

  var requestData = {"method": "GET", "headers":{"Authorization":"Bearer "+ScriptApp.getOAuthToken()}};
  var shID = getSheetID("DISCHEM LINES CHECK") //Get Sheet ID of sheet name "DISCHEM LINES CHECK"
  var url = "https://docs.google.com/spreadsheets/d/"+ ssID + "/export?format=xlsx&id="+ssID+"&gid="+shID;

  var result = UrlFetchApp.fetch(url , requestData);  
  var contents = result.getContent();
  
   //EMAIL ADDRESSES CODE FOR PRIMARY EMAIL
  SpreadsheetApp.getActiveSpreadsheet().getSheetByName("DISCHEM EMAILS").activate();
var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 2; // First row of data to process
  var numRows = 1; // Number of rows to process
  // Fetch the range of cells A2:B2
  var dataRange = sheet.getRange(startRow,1,numRows,2);
  // Fetch values for each row in the Range.
  var data = dataRange.getValues();
  for (var i in data) {
    var row = data[i];
    var emailAddress = row[0]; // First column
    var message = "Dear"+" "+row[1]+" "+"here are the classifications."; // Second column
   var Sheets = [{fileName:sheetName+".xlsx", content:contents, mimeType:"application//xlsx"}]
   
     //EMAIL ADDRESSES CODE FOR BCC EMAIL
  SpreadsheetApp.getActiveSpreadsheet().getSheetByName("DISCHEM EMAILS").activate();
var sheet = SpreadsheetApp.getActiveSheet();
    var startRowcc = 3; // First row of data to process
    var numRowscc = 5; // Number of rows to process
  // Fetch the range of cells A3:B7
   var dataRangecc = sheet.getRange(startRowcc,1,numRowscc,5);
  // Fetch values for each row in the Range.
   var datacc = dataRangecc.getValues();
   for (var i2 in datacc) {
    var rowcc = datacc[i2];
    var emailAddresscc = rowcc[0]; // First column
   
   MailApp.sendEmail({
    to: emailAddress,
    subject: "Classifications",
     cc:emailAddresscc,
    htmlBody: message,
    attachments: Sheets
  });
  };
  };
}

具有为抄送发送多封电子邮件的效果,而不是一起发送一封电子邮件。它在该范围内有三封电子邮件,因此它向我发送一封电子邮件和电子邮件 1,然后是我和电子邮件 2,然后是三封电子邮件给我。我希望它发送一封电子邮件,电子邮件 1 和 2 ccd,我作为首要的。

关于我搞砸了公式的哪一部分有什么想法吗?在测试了更多之后,我认为这与我的 } 的位置有关,但不确定它们应该在哪里

标签: javascriptgoogle-apps-script

解决方案


因此,我通过直接使用其中的电子邮件引用单元格来解决问题,而不是对主电子邮件使用相同的代码。哦,现在可以了。

//cc emails
   SpreadsheetApp.getActiveSpreadsheet().getSheetByName("DISCHEM EMAILS").activate();
 var cc1 = SpreadsheetApp.getActiveSheet().getRange('A3').getValue();
  var cc2 = SpreadsheetApp.getActiveSheet().getRange('A4').getValue();

  //EMAIL ADDRESSES CODE FOR PRIMARY EMAIL
  SpreadsheetApp.getActiveSpreadsheet().getSheetByName("DISCHEM EMAILS").activate();
var sheet = SpreadsheetApp.getActiveSheet();
  var startRow = 2; // First row of data to process
  var numRows = 1; // Number of rows to process
  // Fetch the range of cells A2:B2
  var dataRange = sheet.getRange(startRow,1,numRows,2);
  // Fetch values for each row in the Range.
  var data = dataRange.getValues();
  for (var i in data) {
    var row = data[i];
    var emailAddress = row[0]; // First column
    var message = "Dear"+" "+row[1]+" "+"here are the classifications."; // Second column
   var Sheets = [{fileName:sheetName+".xlsx", content:contents, mimeType:"application//xlsx"}]
   
   
   MailApp.sendEmail({
    to: emailAddress,
    subject: "Classifications",
    htmlBody: message,
     cc: cc1 + "," + cc2,
    attachments: Sheets
  });
  };
}

推荐阅读