如何用Google Script实现Google Sheet两列备注内容合并去重
Google Sheet备注列自动合并去重实现思路
1. 字符串拆分预处理
先写拆分备注的辅助逻辑,把形如-标签1 -标签2的字符串拆分为纯标签数组:
- 先去除字符串开头的
-符号,再用-作为分隔符拆分字符串,过滤掉空值和空格内容,避免无效标签进入后续流程。 - 针对空输入的情况做兼容处理,避免拆分报错。
2. 数组去重合并
- 合并两个拆分后的标签数组,通过ES6的
Set数据结构完成去重,Set天然支持按插入顺序保留元素,重复元素会被自动过滤,不需要额外写判断逻辑。 - 如果需要统一标签排序,可以在去重后调用
sort()方法,支持按字母顺序、自定义优先级等规则调整顺序。
3. 格式回拼
把去重后的标签数组重新拼接为目标格式:给每个标签前拼接-符号,所有标签用空格分隔,得到最终的合并备注字符串。
4. 自动触发配置
要实现备注更新时自动执行合并,需要绑定Google Sheet的编辑触发器:
- 在Google Apps Script中添加
onEdit触发函数,通过事件对象判断修改的单元格是否属于你设定的两个关联备注列。 - 如果是目标列触发的修改,就调用上述合并逻辑,把结果写入指定的合并备注列即可。
可直接复用的代码示例
// 合并两个备注字符串的核心函数 function mergeNotes(note1, note2) { // 辅助函数:把备注字符串拆分为标签数组 const splitNote = (inputStr) => { if (!inputStr || inputStr.trim() === '') return [] return inputStr.replace(/^-/, '').trim().split(' - ').filter(tag => tag.trim() !== '') } const tagArr1 = splitNote(note1) const tagArr2 = splitNote(note2) // 合并去重,需要按字母排序可取消注释下方的.sort() const uniqueTags = [...new Set([...tagArr1, ...tagArr2])] // .sort((a,b) => a.localeCompare(b)) // 拼接为目标格式 return uniqueTags.map(tag => `-${tag}`).join(' ') } // 测试示例:输入你给出的两个测试备注 // mergeNotes("-Friendly -Fun", "-Friendly -Cheerful") 输出结果为 "-Friendly -Fun -Cheerful"
内容的提问来源于stack exchange,提问作者Ivan
相关产品推荐
相关产品推荐

