打印后更改工作表的颜色

时间:2019-11-28 07:12:55

标签: google-apps-script printing google-sheets-api

我想要一个脚本/打印按钮,在打印页面后,它将把纸张颜色从红色更改为绿色/或其他。

因为,我的团队创建了很多账单,但是我们不知道该打印哪张账单发送。 有什么办法可以知道打印出了哪些钞票。

1 个答案:

答案 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,以表示工作表已经被打印。