首页 > 解决方案 > 如何在更改的 Google 工作表数据上最后加载并使用脚本以 PDF 格式发送电子邮件

问题描述

我编写了一个脚本函数来获取谷歌表格数据并将电子邮件作为附件发送 PDF。我在这里使用了谷歌表格中的数据透视表。

在此处输入图像描述

问题就在这里。在过滤后的数据透视表之后,然后如果我发送电子邮件。它只发送没有过滤数据。这意味着默认值仅导出为 pdf。

如何发送包含当前过滤数据的电子邮件 pdf?

function sendEmail(){
  try {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var getTabsheetName=ss.getSheetByName('report');

      var url = 'https://docs.google.com/a/mydomain.org/spreadsheets/d/'
      + ss.getId()  //Your File ID 
      + '/export?exportFormat=pdf&format=pdf'
      + '&size=LETTER'
      + '&portrait=true'
      + '&fitw=true'       
      + '&top_margin=0.50'              
      + '&bottom_margin=0.50'          
      + '&left_margin=0.50'             
      + '&right_margin=0.50'           
      + '&sheetnames=false&printtitle=false&pagenumbers=true'
      + '&pagenum=false'
      + '&gridlines=false'
      + '&fzr=FALSE'      
      + '&gid='
      + getTabsheetName.getSheetId();       //the sheet's Id
     

    
    var emailsheet=ss.getSheetByName('Email');
    var emailContentsheet=ss.getSheetByName('EmailContent');
    var subject = emailContentsheet.getRange(2,1).getValue();
    var n=emailsheet.getLastRow();
     
    var params = {
      method      : "get",
      headers     : {"Authorization": "Bearer " + ScriptApp.getOAuthToken()},
      muteHttpExceptions: true
    };
    var blob = UrlFetchApp.fetch(url, params).getBlob().setName('Report.pdf');
    for (var i = 2; i < n+1 ; i++ ) {
      // SpreadsheetApp.flush();
      var emailAddress = emailsheet.getRange(i,2).getValue();
      var name=emailsheet.getRange(i,1).getValue();
      var message = emailContentsheet.getRange(2,2).getValue();
      var returnData = [name,message];
      var templ = HtmlService.createTemplateFromFile('index');
      templ.data = returnData;
      var htmlboday = templ.evaluate().getContent();
      MailApp.sendEmail({
        to: emailAddress,
        subject: subject,
        htmlBody: htmlboday,
        attachments:[blob]
      });
  }
  } catch (f) {
    Logger.log(f.toString());
  }
}

标签: javascriptgoogle-apps-scriptgoogle-sheetspivot-table

解决方案


推荐阅读