Google 表格应用程序脚本 |使用分页符保存 PDF

问题描述 投票:0回答:0

我在下面有一个脚本,可以将工作表另存为 PDF。一切正常。但是我需要在脚本中插入一个命令,该命令将在特定行(例如第 25 行)上保存为 PDF 的工作表上设置分页符。也就是说,第 25 行之后的所有内容都将在结果中的新页面上PDF文件。这可能吗?感谢您的帮助。

`function printPDFsheet10() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sourcesheet = ss.getSheetByName("Doklad-PKBOZP");
  var originalSheet = ss.getActiveSheet(); // uložení ID listu, ze kterého se funkce spouští

  // filtruj sloupec L a odstraň řádky s mezerami
  sourcesheet.getRange('L27').activate();
  var criteria = SpreadsheetApp.newFilterCriteria()
    .setHiddenValues([''])
    .build();
  sourcesheet.getFilter().setColumnFilterCriteria(12, criteria); 
  
  // export do PDF
  var id = ss.getId();
  var shtId = sourcesheet.getSheetId();
  var url = 'https://docs.google.com/spreadsheets/d/' + id + '/export' +
    '?format=pdf&landscape=false&portrait=true&size=A4&scale=2&fitw=true&fith=true&top_margin=0.60&bottom_margin=0.60&left_margin=0.60&right_margin=0.60&gid=' + 
    shtId;
  
  var sheetName = sourcesheet.getName();
  var timestamp = Utilities.formatDate(new Date(), "GMT+1", "yyyyMMdd-HHmmss");
  var val = sheetName + "_" + timestamp + ".pdf";

  var res = UrlFetchApp.fetch(url, {
    headers: { Authorization: 'Bearer ' + ScriptApp.getOAuthToken() },
  });
  
  // vloží novou stránku před řádek 25
  var range = sourcesheet.getRange('A25');
  var anchor = range.getCell(1, 1);
  var drawing = anchor.createDrawing();
  var image = drawing.getImage();
  sourcesheet.insertPageBreak(25);
  drawing.remove();
  
  // zobrazení dialogového okna pro stažení PDF souboru
  SpreadsheetApp.getUi().showModelessDialog(
    HtmlService.createHtmlOutput(
      '<a target ="_blank" download="' +
      val +
      '" href = "data:application/pdf;base64,' +
      Utilities.base64Encode(res.getContent()) +
      '">Klikněte zde</a> pro stažení PDF souboru, pokud stahování nezačalo automaticky.' +
      '<script> \
        var a = document.querySelector("a"); \
        a.addEventListener("click",()=>{setTimeout(google.script.host.close,10)}); \
        a.click(); \
      </script>'
    ).setHeight(150),
    'Stahování vašeho protokolu v PDF..'
  );

  ss.setActiveSheet(originalSheet); // nastavení původního listu jako aktivní
}`
javascript google-sheets pdf-generation page-break
© www.soinside.com 2019 - 2024. All rights reserved.