代码之家  ›  专栏  ›  技术社区  ›  Dustin Michels

将工作表导出为pdf的google脚本:工作表隐藏/可见时的不同行为

  •  0
  • Dustin Michels  · 技术社区  · 7 年前

    我有一个名为“template”的google电子表格和一个附加的google脚本,它可以将“template”表格转换为具有以下功能的pdf blob:

    function getPdfBlob() {
      var ss = SpreadsheetApp.getActive();
      var ssId = ss.getId();
      var sheet = ss.getSheetByName("template");
      var sheetId = sheet.getSheetId();
      var url = "https://docs.google.com/spreadsheets/d/SS_ID/export?".replace("SS_ID", ssId);
      var url_ext = "exportFormat=pdf&format=pdf" +  // export as pdf / csv / xls / xlsx
          "&size=letter" +                           // 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=true&gridlines=false" +      // hide page numbers and gridlines
          "&fzr=false" +                             // repeat row headers (frozen rows) on each page
          "&gid=";                                   // the sheet's Id
      var token = ScriptApp.getOAuthToken();
      var response = UrlFetchApp.fetch(url + url_ext + sheetId, {
        headers: { Authorization: "Bearer " + token }
      });
      return response.getBlob().setName('test.pdf');
    }
    

    当工作表正常显示时,功能正常工作。当我把床单藏起来时,我突然发现错误:

    Request failed for https://docs.google.com/spreadsheets/[...] returned code 500. Truncated server response: <!DOCTYPE html><html lang="en"><head><meta name="description" content="Web word processing, presentations and spreadsheets"><meta name="viewport" c... (use muteHttpExceptions option to examine full response) (line 16, file "Code")

    似乎隐藏工作表不会更改其工作表ID。我猜这与我无法通过URL直接导航到某个隐藏的工作表有关——Google将我重定向到一个可见的工作表。有什么解决办法吗?

    0 回复  |  直到 7 年前