Google apps script 按日期排序重复提交的内容
我有一个谷歌表单,可以将数据存入谷歌电子表格。第一次填写的表格中的所有数据将存放在第1行,然后下一次填写的表格将存放在第2行,等等。我一直遇到的一个问题是,有时人们会失去编辑提交表格的链接,然后提交一个全新的条目,在谷歌表单上创建一个更新信息的重复行 我正在尝试制作sheet2,它将过滤掉重复的条目,但仍然保持它们第一次出现的顺序。我曾考虑过使用Google apps script 按日期排序重复提交的内容,google-apps-script,google-sheets,google-forms,Google Apps Script,Google Sheets,Google Forms,我有一个谷歌表单,可以将数据存入谷歌电子表格。第一次填写的表格中的所有数据将存放在第1行,然后下一次填写的表格将存放在第2行,等等。我一直遇到的一个问题是,有时人们会失去编辑提交表格的链接,然后提交一个全新的条目,在谷歌表单上创建一个更新信息的重复行 我正在尝试制作sheet2,它将过滤掉重复的条目,但仍然保持它们第一次出现的顺序。我曾考虑过使用UNIQUE(range)函数,但问题是,UNIQUE函数在名称第一次出现时使用。我想要它做的是保持第一个名字出现的位置,但是获取名字出现的最新时间的数
UNIQUE(range)
函数,但问题是,UNIQUE函数在名称第一次出现时使用。我想要它做的是保持第一个名字出现的位置,但是获取名字出现的最新时间的数据,因为这将有更新的信息。我自己想不出一个办法来做这件事。有没有比他更博学的人可以帮忙
下面是我希望实现的一个例子。John第一次出现的时间将被其最近出现的时间覆盖
我想这应该能帮到你
function findCopyDeleteDupes()
{
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sht=ss.getActiveSheet();
var rng=sht.getDataRange();
var rngA=rng.getValues();
var nodupes=[];
var dupeRows=[];
for(var i=0;i<rngA.length;i++)
{
var idx=nodupes.indexOf(rngA[i][1]);
if(idx==-1)//if not in nodupes then put it in nodupes
{
nodupes.push(rngA[i][1]);
}
else
{
for(var j=0;j<rngA[i].length;j++)
{
rngA[idx][j]=rngA[i][j];//Copy data from the latest time to the first position
}
dupeRows.push(i+1);//add this row to the delete rows array
}
}
rng.setValues(rngA);
for(var i=dupeRows.length-1;i>-1;i--)//delete rows from the bottom first
{
sht.deleteRow(dupeRows[i])
}
}
函数findCopyDeleteDupes()
{
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sht=ss.getActiveSheet();
var rng=sht.getDataRange();
var rngA=rng.getValues();
var nodupes=[];
var dupeRows=[];
对于(var i=0;i