如何修改Google Sheet自定义脚本实现多格式薪资数字提取
薪资提取自定义函数优化方案
核心优化点
- 调整匹配顺序:将Lookup表的待匹配数值按字符串长度从长到短排序,避免10000被误识别为1000这类截断问题
- 新增多格式适配:自动处理千位分隔符逗号、k/K后缀的薪资格式,统一归一化后再匹配
- 兼容原有使用逻辑:无需调整函数调用方式,直接替换原有脚本即可生效
优化后完整代码
/** * @customfunction */ function salary(text, list){ var result = 'Negotiable'; // 过滤空值后按字符串长度降序排序,优先匹配更长的数值避免截断 list = list.flat().filter(Boolean).sort((a,b) => String(b).length - String(a).length); // 对输入文本做归一化处理,统一不同格式的薪资表达 const normalizedText = text.toLowerCase() // 移除千位分隔符逗号 .replace(/,/g, '') // 将k/K后缀的数值转换为标准数字,如4.5k转为4500、9k转为9000 .replace(/(\d+\.?\d*)k/g, (match, num) => Math.round(parseFloat(num) * 1000)); // 遍历匹配,同时支持原格式和归一化格式匹配 for(let str of list){ const strVal = String(str); if(text.includes(strVal) || normalizedText.includes(strVal)){ result = strVal; break; } } return result; }
使用说明
和原有调用方式一致,在D列对应单元格输入公式=salary(A2,'Data Lookup'!A:A),下拉填充即可适配以下薪资格式:
- 无格式整数:2000、12000、30000
- 带千位分隔符数字:20,000、35,000、100,000
- 带k/K后缀薪资:4.5k、9K、12.5k
内容的提问来源于stack exchange,提问作者Umar Arshad
相关产品推荐
相关产品推荐

