Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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
Javascript 使用Google Sheet检查特定列的重复条目_Javascript_Loops_Google Apps Script_Google Sheets - Fatal编程技术网

Javascript 使用Google Sheet检查特定列的重复条目

Javascript 使用Google Sheet检查特定列的重复条目,javascript,loops,google-apps-script,google-sheets,Javascript,Loops,Google Apps Script,Google Sheets,我有一个谷歌表单,由于Zapier的电话,它会定期更新。每隔一段时间,工作表中就会添加一行新内容,我想检查工作表的其余部分是否有重复内容,如果发现重复内容,请将其删除。可能的重复项仅在某些字段上,例如: 添加的条目有:Title=“My super duper night run”,Distance=“3.6”,Time=“24.3” 已经有一个条目:Title=“night run”、Distance=“3.6”、Time=“24.3” 已经有一个条目:Title=“My super dupe

我有一个谷歌表单,由于Zapier的电话,它会定期更新。每隔一段时间,工作表中就会添加一行新内容,我想检查工作表的其余部分是否有重复内容,如果发现重复内容,请将其删除。可能的重复项仅在某些字段上,例如:

  • 添加的条目有:Title=“My super duper night run”,Distance=“3.6”,Time=“24.3”
  • 已经有一个条目:Title=“night run”、Distance=“3.6”、Time=“24.3”
  • 已经有一个条目:Title=“My super duper night run”,Distance=“5.5”,Time=“45.1”
  • 在上述场景中,1号将保留,2号将删除,3号将保留。注意:理想情况下,宏/脚本将在每次更新后运行,但可以每隔一段时间运行一次,并在整个列表中查找重复项,尽管需要保留最新项并删除旧项


    我有VBA方面的一些经验,并且已经构建了基本工作表脚本,但不确定如何构建代码以在工作表中循环(自底向上),然后在找到重复项时删除。

    假设第2列和第3列的匹配项是重复项,那么这应该可以工作

    function deleteDups() {
      const ss=SpreadsheetApp.getActive();
      const sh=ss.getActiveSheet();
      const startrow=2;
      const rg=sh.getRange(startrow,1,sh.getLastRow()-startrow+1,sh.getLastColumn());
      const vs=rg.getDisplayValues();//this get the data as string
      let uA=[];//unique array
      let d=0;//delete counter
      vs.forEach(function(r,i){
        let p=r[1]+r[2];//adding two strings together is a string
        //uA is an array of strings
        if(uA.indexOf(p)==-1) {
          uA.push(p);//uA is made up of all the unique strings
        }else{
          sh.deleteRow(i+startrow-d++);//the delete counter makes up for the rows that get deleted because the index into the  data remains the same even though the row is now gone.
        }
      });
    }
    

    欢迎光临。请按照中的建议添加您的搜索/研究工作的简要说明。如果您为删除的每一行保留计数器,则可能重复您不必从底部循环。向我显示电子表格的图像,并准确地告诉我什么是重复的谢谢-将检查此信息。