0

我一直在浏览论坛,但一直找不到解决方案,我正在尝试将多张工作表作为单独的附件发送到同一封电子邮件中,到目前为止,我只能通过电子邮件发送一个附件,但是在我的代码下方,似乎找不到选择多张工作表添加到附件的方法:


  function sendTimelist() {

var emailRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Configure").getRange("B2");

    var email = emailRange.getValues();


  var emailAddress = email;
  var mailReplyTo = email;
  var subject = 'Weekly Email Alerts';
  var message = '\bHi team\b,\n\nPlease find the Data of Sheets.\n\nThank you,\.';

  
  
  
  
  var attachmentName = 'Test.csv';
  var fileId = "Ac12154d4s5dsd87s8d";
  var timelist = UrlFetchApp.fetch(
    "https://docs.google.com/feeds/download/spreadsheets/Export?key=" + fileId + "&exportFormat=csv",
    {
      "headers": {Authorization: "Bearer " + ScriptApp.getOAuthToken()},
      "muteHttpExceptions": true
    }
  ).getBlob().setName(attachmentName);
  var optAdvancedArgs = {replyTo: mailReplyTo, name: attachmentName, attachments: [timelist] };

  GmailApp.sendEmail(emailAddress, subject, message, optAdvancedArgs);
}

有任何想法吗?谢谢。

4

1 回答 1

1

我有一个非常复杂的脚本来执行此操作,但我已经提取并更改了它,以便它适合您的目的和导出类型等...

function sendPdf() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sh1 = ss.getSheetByName('Sheet1');//<<--------<<-----DEFINE YOUR FIRST SHEET
  var sh2 = ss.getSheetByName('Sheet2');//<<--------<<-----DEFINE YOUR SECOND SHEET
  var exportName1 = "Test1";//<<--------<<------<<--------DEFINE THE 1st ATTACHMENT NAME
  var exportName2 = "Test2";//<<--------<<------<<--------DEFINE THE 2nd ATTACHMENT NAME
  var url1 = 'https://docs.google.com/spreadsheets/d/'+ss.getId()+'/export?exportFormat=csv&format=csv'
  + '&size=A4'                           
  + '&portrait=false'                     
  + '&fitw=true' 
  + '&top_margin=0.60'              
  + '&bottom_margin=0.60'          
  + '&left_margin=0.60'             
  + '&right_margin=0.60'  
  + '&sheetnames=false&printtitle=false' 
  + '&pagenumbers=false&gridlines=false' 
  + '&fzr=false'                         
  + '&gid='+sh1.getSheetId();
  var url2 = 'https://docs.google.com/spreadsheets/d/'+ss.getId()+'/export?exportFormat=csv&format=csv'
  + '&size=A4'                           
  + '&portrait=false'                     
  + '&fitw=true' 
  + '&top_margin=0.60'              
  + '&bottom_margin=0.60'          
  + '&left_margin=0.60'             
  + '&right_margin=0.60'  
  + '&sheetnames=false&printtitle=false' 
  + '&pagenumbers=false&gridlines=false' 
  + '&fzr=false'                         
  + '&gid='+sh2.getSheetId();
  var response1 = UrlFetchApp.fetch(url1, {
    headers: {
      'Authorization': 'Bearer ' +  ScriptApp.getOAuthToken()}
  });
  var response2 = UrlFetchApp.fetch(url2, {
    headers: {
      'Authorization': 'Bearer ' +  ScriptApp.getOAuthToken()}
  });
  var blob1 = response1.getBlob().setName(exportName1);
  var blob2 = response2.getBlob().setName(exportName2);
  MailApp.sendEmail({to: 'email@email.com', //<<--------<<------EMAIL TO SEND TO
                     subject: 'Send Multiple Sheets',//<<-------EMAIL SUBJECT
                     message: 'See attached',//<<--------<<-----EMAIL BODY - I WOULD GENERALLY USE htmlBody BUT IN THIS CASE EDITED TO NOT GET TOO CONFUSING
                     name: 'Send Sheets',//<<--------<<------<<-NAME THAT APPEARS WHEN EMAIL SENT
                     replyTo: 'no-reply@email.com',//<<--------<WHERE A REPLY TO THE EMAIL WILL GO
                     attachments: [{
                       fileName: exportName1,
                       content: blob1.getBytes(),
                       mimeType: "text/csv"},{
                       fileName: exportName2,
                       content: blob2.getBytes(),
                       mimeType: "text/csv"}],
                    });
}

这可能会使用for()etc 进行编辑以使其更整洁,但这使其易于开始。要添加更多工作表,几乎可以复制并粘贴代码,然后更改相关var的等

于 2020-07-19T17:25:27.183 回答