微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在同一活动工作表中发送带有电子邮件单元格引用的活动工作表的 PDF 附件

如何解决在同一活动工作表中发送带有电子邮件单元格引用的活动工作表的 PDF 附件

我正在尝试将活动工作表和仅活动工作表作为 pdf 附件发送到位于单元格 C1 或 (1,3) 中的电子邮件

当前脚本执行但我没有收到电子邮件

ExternalContext context = FacesContext.getCurrentInstance().getExternalContext();
HttpServletResponse response =  (HttpServletResponse)context.getResponse();
response.setHeader("Custom-Header","test");
externalContext.redirect("foo.xhtml");

我曾经编写过成功发送电子邮件的脚本,但从未指定工作表名称和电子邮件地址。这次我想创建一种基于活动工作表发送电子邮件的动态方式。提前致谢!

解决方法

您当前代码中的问题:

  1. 您的函数结构不正确。在编辑器中运行此代码时,您的代码应该会显示失败的执行日志。

外观如下:

function sendSheetToPdf(){
}

// process the sheet data and get pdf blob

function sendReport() {

  //send email
}
  1. 您的基本网址不正确。根据您的参考资料 Specify PDF export parameters,您的基本网址应如下所示:

    var url = "https://docs.google.com/spreadsheets/d/" + doc.getId() + "/export?


示例工作代码:

function sendSheetToPdf(){

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var ssId = SpreadsheetApp.getActiveSpreadsheet().getId();
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var sheetName = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getName();
  var email = sheet.getRange(1,3).getValue();

  // Base URL
  var url = "https://docs.google.com/spreadsheets/d/"+ ss.getId()+"/export?";
  
  /* Specify PDF export parameters
  From: https://code.google.com/p/google-apps-script-issues/issues/detail?id=3579
  */

  var url_ext = 'exportFormat=pdf&format=pdf' // export as pdf / csv / xls / xlsx
      + '&size=A4' // paper size legal / letter / A4
      + '&portrait=true' // orientation,false for landscape
      + '&fitw=true&source=labnol' // fit to page width,false for actual size
      + '&sheetnames=false&printtitle=false' // hide optional headers and footers
      + '&pagenumbers=false&gridlines=false' // hide page numbers and gridlines
      + '&fzr=false' // do not repeat row headers (frozen rows) on each page
      + '&gid='; // the sheet's Id

  var token = ScriptApp.getOAuthToken();

  var response = UrlFetchApp.fetch(url + url_ext + sheet.getSheetId(),{                                 
          headers : {
              'Authorization' : 'Bearer ' + token
          }
      }).getBlob().setName(sheet.getName() + ".pdf");

  var sheet_as_pdf_blob_document=response;


  // Email Business
  var recipient = email;
  var subject="Test"
  var body="TEST.";
  var nameOfSender="Test";

  // Here we send the email

  var message = {
  to: recipient,subject: subject,body: body,name: nameOfSender,attachments: [sheet_as_pdf_blob_document]
  }

  MailApp.sendEmail(message);
   
}
  • 我刚刚修复了您的 base url,将 sendReport() 内容移到 sendSheetToPdf() 中,因为发送电子邮件所需的变量已在 sendSheetToPdf() 中声明。

输出:

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。