首页 > 解决方案 > 为什么 Google 表格在发送电子邮件时缺少最后一封电子邮件?

问题描述

我的 google 表格会将表格的 PDF 副本通过电子邮件发送到 4 封电子邮件列表(在单元格 L5:L8 中),但似乎单元格 L8 中的电子邮件从未被选中,记录器在数组中显示它!. 查看我的代码并帮助解决问题!?我怀疑我的 FOREACH 循环有问题。

    function onEdit2(e) {
  var sheet = SpreadsheetApp.getActiveSheet();
  var r  = sheet.getRange('L11').getValue();
  if (r == "Send") {
    var ss = SpreadsheetApp.getActiveSpreadsheet()
    var ssID = ss.getId();
    var sheet = ss.getActiveSheet();
    var sheetName = ss.getName();
    var key = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getName();
    var token = ScriptApp.getOAuthToken();
    var setcolor= SpreadsheetApp.getActiveSheet().setTabColor("#0000A0");
   var emails= sheet.getRange("L5:L8").getValues();


    var subject = "Daily report ";
    var body = "Please find the attached" +" "+ key ;

    var url = "https://docs.google.com/spreadsheets/d/"+ssID+"/export?" 
      + "format=xlsx" +  "&gid="+sheetgId+ "&portrait=true" + 
      "&exportFormat=pdf";


    var tempSheet = ss.insertSheet("tempSheet"); // Added
    sheet.getRange("A1:J27").copyTo(tempSheet.getRange(1, 1)); // Added
    SpreadsheetApp.flush(); // Added
    var sheetgId = tempSheet.getSheetId(); // Added

    var url = "https://docs.google.com/spreadsheets/d/"+ssID+"/export?" + "format=xlsx" +  "&gid="+sheetgId+ "&portrait=true" + "&exportFormat=pdf";
    var result = UrlFetchApp.fetch(url, {headers: {'Authorization': 'Bearer ' +  token}});
    var contents = result.getContent();
    emails.forEach(function(email){

    MailApp.sendEmail(email.toString(),sheetName ,body, {attachments: [{fileName: sheetName + ".pdf", content: contents, mimeType: "application//pdf"}]});

    ss.deleteSheet(tempSheet); // Added
  })
  }
    var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
  for ( var i = 0 ; i<sheets.length ; i++) {
    var sheet1 = sheets[i];
     sheet1.getRangeList(['L3','L11']).clearContent();
}
}

标签: google-apps-scriptgoogle-sheets

解决方案


推荐阅读