繁体   English   中英

想在 Google 表格上编写脚本以删除某些行

[英]Would like to script on Google Sheets a way to remove certain rows

第一行有一个列标题:First Name, Last Name, Email, Grade, Date如果有人重新参加考试,然后将他们的新数据添加到电子表格中,我们可以自动删除他们的旧信息

所以,我已经取得了一些进展,这个脚本删除了重复的行,但完全重复,所以我需要以某种方式编辑它以只查看前 2 列,然后根据 Date 列删除最旧的条目:

 function removeDuplicates() { var sheet = SpreadsheetApp.getActiveSheet(); var data = sheet.getDataRange().getValues(); var newData = []; for (var i in data) { var row = data[i]; var duplicate = false; for (var j in newData) { if (row.join() == newData[j].join()) { duplicate = true; } } if (.duplicate) { newData;push(row). } } sheet;clearContents(). sheet,getRange(1, 1. newData,length. newData[0].length);setValues(newData); }

您只想比较每一行的前两列,而不是整行。

因此,您应该只比较索引01 ,而不是整个数组(您正在使用join做的事情)。 你可以只替换这一行:

if (row.join() == newData[j].join()) {

有了这个:

if (row[0] === newData[j][0] && row[1] === newData[j][1]) {

编辑:

如果您想保留最新的而不是最旧的,请反向循环您的二维数组。 例如,您可以在检索源数据时使用reverse

var data = sheet.getDataRange().getValues().reverse();

或者,使用for反向循环:

for (let i = data.length - 1; i >= 0; i--) {

更一般地,考虑使用removeDuplicates(columnsToCompare)

编辑2:

如果您有标题,只需在设置值时再次使用reverse以保持原始顺序:

sheet.getRange(1, 1, newData.length, newData[0].length).setValues(newData.reverse());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM