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
相关产品推荐
相关产品推荐

