[英]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); }
您只想比较每一行的前两列,而不是整行。
因此,您应该只比较索引0
和1
,而不是整个数组(您正在使用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) 。
如果您有标题,只需在设置值时再次使用reverse
以保持原始顺序:
sheet.getRange(1, 1, newData.length, newData[0].length).setValues(newData.reverse());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.