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

