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

如何在Google Sheets中从URL提取预设匹配的人名实体

实现方案

你可以通过Google Apps Script自定义函数完成这个需求,操作步骤和代码如下:

前期准备

  • 将你整理好的待匹配人名集单独放在一个工作表中,命名为人名库,所有人名放在A列,每个单元格存储一个完整人名,例如Maite Kelly、Giovanni Zarrella
  • 待处理的URL放在另一个工作表(可命名为数据处理)的A列,从A2行开始存储,第一行预留为表头

自定义函数代码

打开目标Google Sheets,点击顶部菜单栏「扩展程序」-「Apps Script」,清空默认生成的代码,粘贴以下内容:

/**
 * 从URL中匹配提取预设人名库中的人名
 * @param {string} url 待处理的URL字符串
 * @return 匹配到的人名列表,自动横向填充到相邻单元格
 * @customfunction
 */
function EXTRACT_NAMES(url) {
  // 配置项:可根据你实际的存储位置修改
  const NAME_SHEET_NAME = '人名库';
  const NAME_COLUMN = 'A:A';

  // 读取人名库并过滤空值
  const nameList = SpreadsheetApp.getActiveSpreadsheet()
    .getSheetByName(NAME_SHEET_NAME)
    .getRange(NAME_COLUMN)
    .getValues()
    .flat()
    .filter(name => name && typeof name === 'string');
  
  if (!url || typeof url !== 'string') return [];
  const lowerUrl = url.toLowerCase();
  const matchedNames = [];

  // 遍历人名库匹配URL
  nameList.forEach(fullName => {
    // 把人名转换为URL常用的连字符格式进行匹配
    const urlFormatName = fullName.toLowerCase().replace(/\s+/g, '-');
    if (lowerUrl.includes(urlFormatName)) {
      matchedNames.push(fullName);
    }
  });

  // 按人名在URL中出现的顺序排序
  matchedNames.sort((a,b) => {
    const aPos = lowerUrl.indexOf(a.toLowerCase().replace(/\s+/g, '-'));
    const bPos = lowerUrl.indexOf(b.toLowerCase().replace(/\s+/g, '-'));
    return aPos - bPos;
  })

  return matchedNames.length ? matchedNames : [];
}

使用方法

  • 保存代码后回到数据处理工作表,在需要输出结果的第一个单元格(例如B2)输入公式=EXTRACT_NAMES(A2)
  • 按下回车后,匹配到的人名会自动横向填充到B列及之后的相邻单元格
  • 下拉B2单元格的填充柄,即可批量处理所有列的URL

优化提示

  • 如果人名库规模超过1000条,可添加缓存逻辑避免每次调用都重新读取人名库,提升运行效率
  • 如果URL存在人名拼写变体的情况,可以在人名库中补充对应别名,或者在代码中增加模糊匹配规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 12:06:03