【问题标题】:Only send first sheet只发送第一张纸
【发布时间】:2019-07-26 08:15:07
【问题描述】:

我从一个论坛获得了以下内容,它确实有效,但我只想要以 PDF 格式创建并通过电子邮件发送的第一张工作表,目前,整个文件以 .pdf 形式发送。

我已经尝试了几个选项,但我相信您可以看到,我不是程序员。任何帮助将非常感激。

function sendSheetToPdfwithA1MailAdress() { // this is the function to call

  var ss = SpreadsheetApp.getActiveSpreadsheet();

  var sh = ss.getSheets()[0]; // it will send sheet 0 which is the first sheet in the spreadsheet.

  // if you change the number, change it also in the parameters below

  var shName = sh.getName()

  sendSpreadsheetToPdf(0, shName, sh.getRange('C12').getValue(), "Shoalhaven     Hotwater & Elements", "Hi, Please see attached Purchase Order - Shoalhaven     Hotwater & Elements");

}

function sendSpreadsheetToPdf(sheetNumber, pdfName, email, subject, htmlbody) {

  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();

  var spreadsheetId = spreadsheet.getId()

  var sheetId = sheetNumber ? spreadsheet.getSheets()["Purchase Order     Form"].getSheetId() : null;

  var url_base = spreadsheet.getUrl().replace(/edit$/, '');


  var url_ext = 'export?exportFormat=pdf&format=pdf' //export as pdf

    +
    (sheetId ? ('&gid=' + sheetId) : ('&id=' + spreadsheetId))

【问题讨论】:

标签: google-apps-script google-sheets


【解决方案1】:

在通过电子邮件发送之前,您需要隐藏所有其他工作表。我这样做是为了创建一个 pdf,然后使用我传回的 fileID 附加 pdf。:

function toPDF(folderlocation) {
  var ss = SpreadsheetApp.getActiveSpreadsheet(); 

  ss.getSheets()[0].hideSheet();
  ss.getSheets()[1].hideSheet();
  ss.getSheets()[2].hideSheet();    
  var blob = DriveApp.getFileById(ss.getId()).getAs("application/pdf");
  var prettyTime= Utilities.formatDate(new Date(),'America/Los_Angeles', "YYYY-MM-dd" );  
  folder = DriveApp.getFolderById(folderlocation);
  var theBlob = ss.getBlob().getAs('application/pdf').setName('SOME TITLE  '+prettyTime);
  var newFile = folder.createFile(theBlob);    
  ss.getSheets()[0].showSheet();
  ss.getSheets()[1].showSheet();
  ss.getSheets()[2].showSheet();
  return newFile;
}

【讨论】:

  • 这个Q是OP的第三个帖子,内容非常相似。也许您想查看作为问题评论包含的链接的可能重复项。
【解决方案2】:

试试这个:

您只需要为您的 pdf 创建一个文件夹,然后在代码中输入该文件夹的 ID。此功能将在创建每个 pdf 之前丢弃旧的 pdf。它还隐藏除第一张以外的所有工作表。创建并保存文件后,它会再次显示工作表。

function savePDF() {
  var ss=SpreadsheetApp.getActive(); 
  var allshts=ss.getSheets();
  for(var i=1;i<allshts.length;i++) {//hide unwanted sheets
    allshts[i].hideSheet();
  }
  var ssBlob=ss.getBlob().getAs('application/pdf').setName('MyPDF');
  var pdfFolder=DriveApp.getFolderById('pdfFolderId');//pdfFolderId
  var files=pdfFolder.getFilesByName('MyPDF');
  while(files.hasNext()){
    files.next().isTrashed(true);//trash oldfiles
  }
  var pdfFile=pdfFolder.createFile(ssBlob);    
  for(var i=1;i<allshts.length;i++) {//show unwanted sheets
    allshts[i].showColumns(i);
  }
  return pdfFile;
}

【讨论】:

    猜你喜欢
    • 2017-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-10
    • 1970-01-01
    • 2023-04-09
    相关资源
    最近更新 更多