使用参数导出为 PDF

Export to PDF with parameters

一直在阅读有关如何将 sheet 保存到 PDF 文件的信息,我偶然发现了这段代码,它以前运行良好,但现在不会出现 "uiapp deprecated" 错误。我怎样才能解决这个问题?顺便说一句,这些代码不是我的,我只是根据自己的喜好对其进行了调整。建议使用 HTML 服务。

function PDF() {
    SpreadsheetApp.flush();
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sheet = ss.getActiveSheet();
    var gid = sheet.getSheetId();
    var pdfOpts = '&size=letter&fzr=false&portrait=true&fitw=false&gridlines=false&scale=1&top_margin=0.17&bottom_margin=0.17&left_margin=0.1&right_margin=0.1&printtitle=false&sheetnames=false&pagenum=UNDEFINED&attachment=false&gid='+gid;
    var row2 = 66;
    var printRange = '&c1=0' + '&r1=0' + '&c2=15' + '&r2='+row2; // B2:APn
    var url = ss.getUrl().replace(/edit$/, '') + 'export?format=pdf' + pdfOpts + printRange;
    var app = UiApp.createApplication().setWidth(300).setHeight(100);
    app.setTitle('Print this sheet');
    var link = app.createAnchor('Download PDF', url).setTarget('_new');
    app.add(link);
    ss.show(app);
};

这个修改怎么样?我认为您的情况可能有几个答案。所以请把这当作其中之一。

修改后的脚本:

本次修改,我使用了ClassUi的showModalDialog方法。

从:
var app = UiApp.createApplication().setWidth(300).setHeight(100);
app.setTitle('Print this sheet');
var link = app.createAnchor('Download PDF', url).setTarget('_new');
app.add(link);
ss.show(app);
到:
var html = '<a href="' + url.replace(/&/g, "&amp;") + '" target="_new">Download PDF</a>';
var userInterface = HtmlService.createHtmlOutput(html).setWidth(300).setHeight(100);
SpreadsheetApp.getUi().showModalDialog(userInterface, 'Print this sheet');

参考:

如果我误解了你的问题,请告诉我。我想修改一下。