构建一个 Google Apps 脚本库,您 可以使用该库移除电子表格数据中的重复行。
目标
- 设置脚本。
- 运行脚本。
前提条件
如需使用此示例,您需要满足以下前提条件:
- 一个 Google 账号(Google Workspace 账号可能需要管理员批准)。
- 一个可访问互联网的网络浏览器。
设置脚本
如需构建库,请执行以下操作:
- 登录您的 Google 账号。
- 如需打开脚本编辑器,请前往 script.google.com。
- 点击左上角的新建项目 。
删除脚本编辑器中的所有代码,然后粘贴以下代码。
点击保存
。
点击左上角的未命名项目 。
将脚本命名为 Remove duplicate rows ,然后点击重命名 。
依次点击部署 > 新建部署。
点击选择类型 旁边的启用部署类型
> 库 。
输入库的说明,例如移除重复行 。有权访问该库的任何人都可以查看此说明。
点击部署 。
点击左侧的项目设置
。
在 ID 下,复制脚本 ID 以在后续步骤中使用。
运行脚本
如需使用库,您必须至少拥有其 Apps 脚本项目的查看权限。由于您创建了该库,因此您拥有使用该库所需的权限。如果您想让其他人使用该库,请授予他们对 Apps 脚本项目的查看权限。
如需使用库,请执行以下操作:
- 打开包含重复行的 Google 表格电子表格。如需使用 示例电子表格,请复制示例重复行 电子表格。
- 依次点击扩展程序 > Apps 脚本。
- 点击库 旁边的添加库 图标。
- 在脚本 ID 部分中,粘贴您在上一个部分中复制的库 Apps 脚本项目中的脚本 ID。
- 点击查找 。
- 在版本 部分中,选择 1 。
- 点击添加 。
删除脚本编辑器中的所有代码,然后粘贴以下代码。
function runLibrary() { Removeduplicaterows.removeDuplicates(); }在函数下拉列表中,选择 runLibrary 。
点击运行 。
返回到电子表格,查看不含重复行的更新数据。
查看代码
如需查看此解决方案的 Apps 脚本代码,请点击 查看源代码:
查看源代码
首先,脚本会向电子表格发出一次调用,以检索所有数据。您可以选择逐行读取工作表,但 JavaScript 操作比与其他服务(如电子表格)通信要快得多。您发出的调用越少,速度就越快。这一点非常重要,因为每次脚本执行的最长运行时间为 6 分钟。
变量 data 是一个 JavaScript 二维数组,其中包含工作表中的所有值。newData 是一个空数组,脚本会将所有非重复行放入其中。
第一个 for 循环会遍历 data 二维数组中的每一行。对于每一行,第二个循环会测试 newData 数组中是否已存在具有匹配数据的另一行。如果不是重复行,则该行会被推送到 newData 数组中。
最后,脚本会删除工作表的现有内容,并插入 newData 数组的内容。
修改
您可以根据需要随意修改库。以下部分包含一个可选修改。
移除某些列中具有匹配数据的行
您可能不想移除完全匹配的行,而是想移除仅在一两列中具有匹配数据的行。为此,您可以更改条件语句。
在示例代码中,更新以下行:
if(row.join() == newData[j].join()){ duplicate = true; }
将该行替换为以下代码:
if(row[0] == newData[j][0] && row[1] == newData[j][1]){ duplicate = true; }
前面的条件语句会在工作表的前两列中存在相同数据时查找重复项。
贡献者
此示例由 Google 开发者专家 Romain Vialard 创建。在 Twitter 上关注 Romain (@romain_vialard)。
此示例由 Google 在 Google 开发者专家的帮助下维护。