You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Google Sheets中使用.gs脚本打印工作表/指定区域?

在Google Sheets脚本中实现指定区域打印

嘿,我来帮你搞定这个打印的问题!你已经成功选中了目标区域,不过Google Apps Script的服务端代码没法直接触发浏览器的打印对话框,咱们得结合客户端的HTML/JavaScript来实现。下面给你两种可行的方案,按需选择就行:

方案1:基于激活区域的快速打印

这个方案会先激活你指定的区域,然后弹出一个对话框,点击按钮就会触发浏览器的打印功能,默认就会打印你选中的范围,简单直接:

function printInvoice() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var range = sheet.getRange("A1:H46");
  
  // 先激活目标区域,确保打印范围正确
  range.activate();
  
  // 生成带打印按钮的对话框
  var htmlDialog = HtmlService.createHtmlOutput(`
    <button onclick="triggerPrint()">点击打印指定区域</button>
    <script>
      function triggerPrint() {
        // 调用浏览器原生打印功能,Google Sheets会自动识别当前激活的区域
        window.print();
        // 打印完成后关闭对话框
        google.script.host.close();
      }
    </script>
    <style>
      button {
        padding: 10px 20px;
        font-size: 16px;
        cursor: pointer;
        background-color: #4285F4;
        color: white;
        border: none;
        border-radius: 4px;
      }
      button:hover {
        background-color: #3367D6;
      }
    </style>
  `).setWidth(300).setHeight(100);
  
  // 弹出对话框
  SpreadsheetApp.getUi().showModalDialog(htmlDialog, "打印发票");
}

方案2:固定范围的精准打印(推荐)

如果你想彻底确保打印范围不会出错,不想依赖激活区域的状态,可以通过构造PDF导出链接的方式,直接生成指定区域的PDF然后打印,这种方式更稳定:

function printInvoiceWithFixedRange() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var sheetId = sheet.getSheetId();
  var targetRange = "A1:H46";
  
  // 构造PDF导出URL,这里可以自定义打印参数(比如是否显示网格线、方向等)
  var pdfUrl = "https://docs.google.com/spreadsheets/d/" + ss.getId() + "/export?" +
    "format=pdf" +
    "&gid=" + sheetId +
    "&range=" + encodeURIComponent(targetRange) +
    "&portrait=true" + // true=纵向,false=横向
    "&fitw=true" + // 适应页面宽度
    "&sheetnames=false&printtitle=false&pagenumbers=false" + // 隐藏页眉页脚的多余信息
    "&gridlines=false"; // 隐藏网格线(根据需求调整)
  
  var htmlDialog = HtmlService.createHtmlOutput(`
    <button onclick="printFixedRange()">点击打印指定区域</button>
    <script>
      function printFixedRange() {
        // 打开PDF新窗口
        const pdfWindow = window.open('${pdfUrl}', '_blank');
        // 等待PDF加载完成后触发打印
        pdfWindow.onload = function() {
          pdfWindow.print();
          // 打印后延迟关闭窗口,确保打印流程完成
          setTimeout(() => pdfWindow.close(), 1000);
        }
      }
    </script>
    <style>
      button {
        padding: 10px 20px;
        font-size: 16px;
        cursor: pointer;
        background-color: #4285F4;
        color: white;
        border: none;
        border-radius: 4px;
      }
      button:hover {
        background-color: #3367D6;
      }
    </style>
  `).setWidth(300).setHeight(100);
  
  SpreadsheetApp.getUi().showModalDialog(htmlDialog, "打印发票");
}

使用步骤

  1. 打开你的Google Sheets,点击顶部菜单栏的「工具」→「脚本编辑器」
  2. 把上面的代码(选其中一个方案即可)粘贴进去,保存脚本
  3. 回到表格,你可以直接在脚本编辑器里运行printInvoice(或printInvoiceWithFixedRange),也可以给表格添加一个自定义菜单方便日常使用

内容的提问来源于stack exchange,提问作者relez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:24:19