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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 08:27:04