我想要一个脚本/打印按钮,在打印页面后,它将把纸张颜色从红色更改为绿色/或其他。
因为,我的团队创建了很多账单,但是我们不知道该打印哪张账单发送。 有什么办法可以知道打印出了哪些钞票。
答案 0 :(得分:1)
为Google表格实现自定义打印功能是一个非常棘手的话题。执行打印功能时,无法设置要运行的触发器。
根据this Stackoverflow的答案(如何在工作表中打印范围)改编而成,您可以实现以下代码:
var PRINT_OPTIONS = {
'size': 7, // paper size. 0=letter, 1=tabloid, 2=Legal, 3=statement, 4=executive, 5=folio, 6=A3, 7=A4, 8=A5, 9=B4, 10=B
'fzr': false, // repeat row headers
'portrait': true, // false=landscape
'fitw': true, // fit window or actual size
'gridlines': false, // show gridlines
'printtitle': false,
'sheetnames': false,
'pagenum': 'UNDEFINED', // CENTER = show page numbers / UNDEFINED = do not show
'attachment': false
}
var PDF_OPTS = objectToQueryString(PRINT_OPTIONS);
function onOpen(e) {
SpreadsheetApp.getUi().createMenu('Print...').addItem('Print sheet', 'printSheet').addToUi();
}
function printSheet() {
SpreadsheetApp.flush();
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var range = sheet.getDataRange();
var gid = sheet.getSheetId();
var printRange = objectToQueryString({
'c1': range.getColumn() - 1,
'r1': range.getRow() - 1,
'c2': range.getColumn() + range.getWidth() - 1,
'r2': range.getRow() + range.getHeight() - 1
});
var url = ss.getUrl().replace(/edit$/, '') + 'export?format=pdf' + PDF_OPTS + printRange + "&gid=" + gid;
var htmlTemplate = HtmlService.createTemplateFromFile('js');
htmlTemplate.url = url;
SpreadsheetApp.getUi().showModalDialog(htmlTemplate.evaluate().setHeight(10).setWidth(100), 'Print range');
sheet.setTabColor("ff0000"); // change tab color to red after sheet has been printed
}
function objectToQueryString(obj) {
return Object.keys(obj).map(function(key) {
return Utilities.formatString('&%s=%s', key, obj[key]);
}).join('');
}
您还需要在项目中创建一个HTML文件。为此,您可以在编辑器中单击File>New>HTML File
,将其名称设置为js
,然后将以下内容粘贴到其中:
<script>
window.open('<?=url?>', '_blank', 'width=800, height=600');
google.script.host.close();
</script>
所有这些都将在Sheets UI的顶部创建一个菜单项,当您单击它时,将带您进入Sheet的PDF导出,从而可以从中打印Sheet。此外,它将制表符颜色设置为red
,以表示工作表已经被打印。