Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 按日期排序重复提交的内容_Google Apps Script_Google Sheets_Google Forms - Fatal编程技术网

Google apps script 按日期排序重复提交的内容

Google apps script 按日期排序重复提交的内容,google-apps-script,google-sheets,google-forms,Google Apps Script,Google Sheets,Google Forms,我有一个谷歌表单,可以将数据存入谷歌电子表格。第一次填写的表格中的所有数据将存放在第1行,然后下一次填写的表格将存放在第2行,等等。我一直遇到的一个问题是,有时人们会失去编辑提交表格的链接,然后提交一个全新的条目,在谷歌表单上创建一个更新信息的重复行 我正在尝试制作sheet2,它将过滤掉重复的条目,但仍然保持它们第一次出现的顺序。我曾考虑过使用UNIQUE(range)函数,但问题是,UNIQUE函数在名称第一次出现时使用。我想要它做的是保持第一个名字出现的位置,但是获取名字出现的最新时间的数

我有一个谷歌表单,可以将数据存入谷歌电子表格。第一次填写的表格中的所有数据将存放在第1行,然后下一次填写的表格将存放在第2行,等等。我一直遇到的一个问题是,有时人们会失去编辑提交表格的链接,然后提交一个全新的条目,在谷歌表单上创建一个更新信息的重复行

我正在尝试制作sheet2,它将过滤掉重复的条目,但仍然保持它们第一次出现的顺序。我曾考虑过使用
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