使用参数导出为 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, "&") + '" target="_new">Download PDF</a>';
var userInterface = HtmlService.createHtmlOutput(html).setWidth(300).setHeight(100);
SpreadsheetApp.getUi().showModalDialog(userInterface, 'Print this sheet');
参考:
如果我误解了你的问题,请告诉我。我想修改一下。
一直在阅读有关如何将 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, "&") + '" target="_new">Download PDF</a>';
var userInterface = HtmlService.createHtmlOutput(html).setWidth(300).setHeight(100);
SpreadsheetApp.getUi().showModalDialog(userInterface, 'Print this sheet');
参考:
如果我误解了你的问题,请告诉我。我想修改一下。