gpt4 book ai didi

google-sheets - 如何在 Google Sheets 中使用 .gs 脚本打印工作表/范围?

转载 作者:行者123 更新时间:2023-12-04 16:42:04 32 4
gpt4 key购买 nike

我正在尝试在 Google Sheets 中创建一个脚本来选择一个范围并打印它。我正在尝试根据某些参数打印一些信息。我有以下设置所需范围的脚本,但我没有看到使用脚本打印它的方法。

function printInvoice() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var range = sheet.getRange("A1:H46");

range.activate();
}

有什么建议?谢谢!

最佳答案

您可以使用以下脚本:

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 selected range', 'printSelectedRange').addToUi();
}

function printSelectedRange() {
SpreadsheetApp.flush();
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var range = sheet.getActiveRange();

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');
}

function objectToQueryString(obj) {
return Object.keys(obj).map(function(key) {
return Utilities.formatString('&%s=%s', key, obj[key]);
}).join('');
}

您还需要在您的项目 ( File>New>HTML File ) 中创建一个名为 js 的 html 文件。 , 并粘贴以下代码:

<script>
window.open('<?=url?>', '_blank', 'width=800, height=600');
google.script.host.close();
</script>

这将在您的表格菜单中创建一个按钮,该按钮将打开具有选定范围的 PDF。您可以修改一些设置,例如打印方向、大小或是否在脚本顶部显示网格线。如果您仍想自动打印范围而不必手动通过打印对话框,您可以:
  • 使用 GmailApp 将文档发送到您的打印机API 类,如果您的打印机支持此类功能。
  • 使用 Google Cloud Print .以下博客文章可能会对此有所帮助:https://ctrlq.org/code/20061-google-cloud-print-with-apps-script
  • 关于google-sheets - 如何在 Google Sheets 中使用 .gs 脚本打印工作表/范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58627501/

    32 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com