用Google Apps Script删除表格指定列重复行并保留最下方最新行
可以直接用下面的Google Apps Script实现需求,操作步骤和注意事项如下:
使用步骤
- 打开目标Google表格,点击顶部菜单栏「扩展程序」→「Apps 脚本」,进入脚本编辑页面
- 删除编辑器中默认的空代码,粘贴下方给出的完整脚本
- 点击页面顶部的保存按钮,给项目自定义命名(比如「去重保留最新行」)
- 首次运行需要授权,按照页面提示完成授权即可(遇到未验证应用提示时,点击「高级」→「前往[你的项目名]」即可继续)
- 选中
deleteDuplicateKeepLastRow函数,点击运行按钮即可执行操作
完整脚本
function deleteDuplicateKeepLastRow() { // 获取当前激活的工作表,如果要指定工作表可替换为 getSheetByName("工作表名称") const sheet = SpreadsheetApp.getActiveSheet(); // 获取表格所有数据 const data = sheet.getDataRange().getValues(); // ID所在列的索引,第一列为0,第二列为1,按需修改即可 const idColumnIndex = 0; const seenIds = new Set(); const rowsToDelete = []; // 从最后一行向上遍历,保证最先匹配到的是要保留的最下方最新行 for (let i = data.length - 1; i >= 0; i--) { const currentId = data[i][idColumnIndex]; // 跳过ID为空的行,不需要可删除该行判断 if (!currentId) continue; if (seenIds.has(currentId)) { // 已存在的ID对应的行加入待删除列表,表格行号=索引+1 rowsToDelete.push(i + 1); } else { seenIds.add(currentId); } } // 从行号大的往小的删除,避免删行后行号偏移导致删错 rowsToDelete.forEach(rowNum => { sheet.deleteRow(rowNum); }); // 操作完成提示,不需要可删除 SpreadsheetApp.getUi().alert(`处理完成,共删除 ${rowsToDelete.length} 行重复数据`); }
效果示例

注意事项
- 运行脚本前建议先备份表格数据,避免误操作无法恢复
- 若需要处理指定工作表,可将代码中
const sheet = SpreadsheetApp.getActiveSheet()修改为const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("你的工作表名称") - 若ID不在第一列,修改
idColumnIndex的数值即可,第一列为0,第二列为1,以此类推
内容的提问来源于stack exchange,提问作者Murtaza Karimi
相关产品推荐
相关产品推荐

