如何以编程方式打印和下载Google电子表格的PDF文件?

时间:2014-05-10 17:18:44

标签: pdf google-apps-script download google-sheets

解决

在New Sheets中,我想创建一个分配给按钮的脚本,通过指定打印选项,包括活动范围,导出和下载工作表的PDF,而不保存文件,绕过必须使用打印对话框到Google云端硬盘。

我按crewstyleSerge insasEric Koleda和其他方式查询了代码,但由于a Google bug,当muteHttpExceptions为时,.fetch当前无法对电子表格服务进行身份验证真正。但是this workaround完全绕过了身份验证并回答了我的问题。

结果是模仿本机打印行为,除了在下载时临时打开一个新选项卡,这是次要的,但我仍然希望尽可能修复它。我也很乐意以编程方式重命名下载的文件,但这并不重要。

function printPdf() {
  SpreadsheetApp.flush();
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();

  var gid = sheet.getSheetId();
  var pdfOpts = '&size=0&fzr=false&portrait=false&fitw=true&gridlines=false&printtitle=false&sheetnames=false&pagenum=UNDEFINED&attachment=true&gid='+gid;
  var row2 = sheet.getMaxRows() - 3;
  var printRange = '&c1=1' + '&r1=1' + '&c2=42' + '&r2='+row2; // B2:APn
  var url = ss.getUrl().replace(/edit$/, '') + 'export?format=pdf' + pdfOpts + printRange;

  var app = UiApp.createApplication().setWidth(200).setHeight(50);
  app.setTitle('Print this sheet');

  var link = app.createAnchor('Download PDF', url).setTarget('_self');
  app.add(link);

  ss.show(app);
}

0 个答案:

没有答案