【问题标题】:Google Docs PDF Export Adds Extra Blank Pages at the EndGoogle Docs PDF 导出在末尾添加了额外的空白页
【发布时间】:2022-01-07 17:47:05
【问题描述】:

我使用谷歌电子表格创建发票并通过电子邮件以 PDF 格式发送它们,它运行良好,我的电子表格是每年一次的,所以每年新的一年我都会创建另一个,我从 2021 年开始的所有电子表格仍然可以正常工作,但是当我尝试打印或导出 PDF 时,我为 2022 年创建的所有新页面都在文档末尾添加了额外的空白页。空白页数取决于工作表上的空白行数,但我之前没有这个问题,即使工作表有 1000 行,如果发票只有 1 页 PDF/Print 只会生成1 页,现在如果工作表有 1000 行,它会生成 19 个空白页。

任何人有同样的问题或解决方案?

例如链接:Spreadsheet link

尝试打印或下载页面,您将看到生成的空白页面。

function savePDF() {
    const ssh = SpreadsheetApp.getActiveSpreadsheet();
    const invoice = ssh.getSheetByName('invoice');

const request = {
    "method": "GET",
    "headers":{"Authorization": "Bearer 
    "+ScriptApp.getOAuthToken()},    
 }

 const key = ssh.getId();
 const bogus = DriveApp.getRootFolder();
 const fetch='https://docs.google.com/spreadsheets/d/'
 + key
 +'/export?format=pdf&gid=' 
 + invoice.getSheetId() 
 + 
'&size=letter&portrait=true
&printtitle=false
&pagenum=CENTER
&sheetnames=false
&gridlines=false
&top_margin=0.25
&bottom_margin=0.50&left_margin=0.25
&right_margin=0.25';

const name = "invoice.pdf";
let pdf = UrlFetchApp.fetch(fetch, request);
pdf = pdf.getBlob().setName(name);

const fold = "Folder ID goes here";
const folder = DriveApp.getFolderById(fold);
const file = folder.createFile(pdf);
}

【问题讨论】:

  • 如何通过脚本或file -> download -> pdf -> export 选项导出工作表?
  • 通过脚本,但我在打印工作表时注意到同样的问题,最后会生成空白页。我记得大约 5 年前遇到过同样的问题,但它已修复,现在又回来了。
  • 您能否在@Leo 中加入您的脚本?
  • 下面的答案是解决问题的最快方法。或者您总是可以在打印之前先隐藏空白行。

标签: pdf google-sheets


【解决方案1】:

问题是它默认打印整张纸。所以它包括所有这些空白行,从而添加了空白页。

您可以做的解决方法是在工作表中 CTRL + A,然后使用 Selected cells

导出

导出:

如您所见,总页数只有 1。

脚本:

我不确定为什么它现在无法正常工作,但可能已经进行了一些更改并默认导出整个工作表。要绕过此问题,您需要将实际范围添加到链接。请参阅以下修改:

修改:

  1. 获取数据范围的 A1 表示法:
  const ssh = SpreadsheetApp.getActiveSpreadsheet();
  const invoice = ssh.getSheetByName('invoice');
  // add this line
  const range = invoice.getDataRange().getA1Notation();
  1. 将范围附加到链接中:
  const fetch = 'https://docs.google.com/spreadsheets/d/' + key
    + '/export?format=pdf&gid=' + invoice.getSheetId()
    + '&size=letter'
    + '&portrait=true'
    + '&printtitle=false'
    + '&pagenum=CENTER'
    + '&sheetnames=false'
    + '&gridlines=false'
    + '&top_margin=0.25'
    + '&bottom_margin=0.50'
    + '&left_margin=0.25'
    + '&right_margin=0.25'
    // add range to link
    + '&range=' + range;

输出:

【讨论】:

  • 我已经添加了我正在使用的代码,但这不是代码的问题,我已经使用了 5 年并且它一直有效。从 2021 年开始,我的电子表格仍然可以使用相同的脚本正常工作,但如果我复制它们,就会出现这个问题,所以我认为这是谷歌方面的错误,而不是我的脚本。也许有些更新。
  • 我记得在 2016 年也遇到过同样的问题,并且已修复,但在修复之前,我不得不更改脚本以在导出时获取最后一行的数据,但现在我有数百个具有相同脚本的电子表格,因此很难以这种方式修复
  • 我已经修改了我的答案,并对您的脚本进行了最小的更改。可能有一些更改会强制导出工作表以包含整个工作表,因此上述解决方案将帮助您绕过该问题。
  • @Leo,我建议如果您对多张工作表使用相同的脚本,请通过库执行此操作。这里发布了一个问题,它有多种解决方案。见this link
  • 感谢@Octavia Sima,您的回答解决了问题,我也开始使用您推荐的库,它为我节省了很多工作。
猜你喜欢
  • 2017-01-21
  • 1970-01-01
  • 1970-01-01
  • 2021-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-29
相关资源
最近更新 更多