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

Google Sheets打印PDF脚本报错:lrow未定义,需固定列宽动态行高

Google Sheets打印PDF脚本错误修复:lrow未定义

错误ReferenceError: lrow is not defined的原因很简单——你代码里用了lrow这个变量,但根本没提前定义它。这个变量的作用是获取特定列的最后一行行号,用来确定打印范围的底部边界。

按照你固定A1:K列、高度适配特定列最后一行的需求,修改后的代码如下:

function PrintWork() {
  SpreadsheetApp.flush();
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  
  // 定义lrow:这里以K列为例,获取该列有内容的最后一行行号
  // 如果要基于整表最后一行,替换成 var lrow = sheet.getLastRow();
  var lrow = sheet.getRange("K:K").getValues().filter(String).length;
  
  var range = sheet.getRange("A1:K" + lrow);

  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
  });
  
  // 补充原代码缺失的PDF导出逻辑示例
  var pdfUrl = "https://docs.google.com/spreadsheets/d/" + ss.getId() + "/export?" +
               "gid=" + gid +
               "&exportFormat=pdf" +
               "&" + printRange;
  // 可根据需求添加打印参数(如横向、边距、页眉页脚等)
}

// 确保转换查询字符串的函数存在(原代码缺失则补充)
function objectToQueryString(obj) {
  return Object.keys(obj).map(key => {
    return encodeURIComponent(key) + '=' + encodeURIComponent(obj[key]);
  }).join('&');
}

关键修改说明:

  • 新增lrow变量定义:根据需求选择行号获取方式——若以某特定列(如K列)的内容行尾为准,用filter(String).length过滤空行;若以整张表最后一行为准,直接用sheet.getLastRow()。
  • 补全了objectToQueryString函数(原代码已有则可忽略),确保能正确将打印范围转为URL参数。
  • 补充了PDF导出链接的示例逻辑,可根据实际需求调整后续打印/导出操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 07:13:19