如何在AppScript中查找包含指定数据的单元格以跟踪未付款发票
实现发票号定位功能的Apps Script方案
核心逻辑非常简单:先读取「first call」工作表固定位置的发票号,再遍历「follow up」工作表H列找匹配项,找到后直接跳转激活对应单元格即可,新手可以直接复制代码使用。
前置说明
- 不需要额外安装工具,直接在你当前的Google表格中就能配置使用
- 代码自带容错处理,未找到匹配发票号时会弹出提示,不会直接报错
完整可直接复用的代码
function 定位指定发票号() { // 获取当前打开的表格文件 const 表格文件 = SpreadsheetApp.getActiveSpreadsheet(); // 读取「first call」工作表D16单元格的目标发票号,自动去除前后空格避免匹配失败 const 源工作表 = 表格文件.getSheetByName("first call"); const 目标发票号 = 源工作表.getRange("D16").getDisplayValue().trim(); // 读取「follow up」工作表H列的所有内容 const 跟进工作表 = 表格文件.getSheetByName("follow up"); const H列所有值 = 跟进工作表.getRange("H:H").getDisplayValues(); // 遍历查找匹配的行 let 匹配行号 = null; for (let 行下标 = 0; 行下标 < H列所有值.length; 行下标++) { const 当前单元格值 = H列所有值[行下标][0].trim(); if (当前单元格值 === 目标发票号) { 匹配行号 = 行下标 + 1; // 数组下标从0开始,表格行号从1开始,需补1 break; } } // 找到则跳转定位到对应单元格,未找到弹出提示 if (匹配行号) { 表格文件.setActiveSheet(跟进工作表); const 目标单元格 = 跟进工作表.getRange(`H${匹配行号}`); 跟进工作表.setActiveRange(目标单元格); } else { SpreadsheetApp.getUi().alert(`未在follow up表H列找到对应发票号:${目标发票号}`); } }
新手操作步骤
- 打开你正在使用的Google表格,点击顶部菜单栏「扩展程序」→「Apps脚本」进入脚本编辑器
- 删掉编辑器里默认的空白代码,粘贴上面的完整代码,点击顶部保存按钮,随便输入项目名比如「发票跟进工具」完成保存
- 首次运行需要授权:点击编辑器顶部运行按钮,按提示选择你的Google账号,遇到「Google未验证应用」提示时,点击「高级」→「转到xxx(你的项目名)」→允许权限即可,授权仅需操作一次
- 后续需要定位发票号时,直接回到脚本编辑器点击运行即可;也可以在表格里插入按钮关联这个脚本,点击按钮就能直接运行,无需每次打开编辑器
注意事项
- 确保代码里的两个工作表名和你实际表格里的名称完全一致,包括空格、标点都不能有差异
- 如果H列数据量非常大(超过10万行),可以把代码里的
getRange("H:H")改成你实际有数据的范围比如getRange("H1:H20000"),运行速度会更快 - 代码默认用显示值匹配,不需要额外调整发票号的数字/文本格式,大部分场景都能正常匹配
内容的提问来源于stack exchange,提问作者Andreas Cayla
相关产品推荐
相关产品推荐

