从 Google 表单中删除重复项的函数

Function to remove duplicates from Google Form

我正在尝试为 google 电子表格制作一个脚本,该脚本将删除通过 google 表单提交的重复条目。本质上,google 表单将条目写入 google 电子表格,我希望自动删除与已通过表单提交的条目重复的任何 google 表单条目。这是我现在的代码:

function onFormSubmit(e) {  
 var sheet = SpreadsheetApp.openById("13ggBeSGGxhI291uPcIr0RudwxxKUigtNEN750Q2hCBM");
 var data = sheet.getDataRange().getValues();
 var newData = new Array();
 for(i in data){
   var row = data[i];
   var duplicate = false;
   for(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);
}

我知道它的某些部分仍然不正确,所以我希望有人可以帮助我更好地了解我做错了什么,以便我可以进行必要的更正。谢谢!

你打开了一个Spreadsheet对象,你还需要打开实际的sheet(一个spreadsheets 有一个或多个 sheets).
sheet class has a method clearContents(), a spreadsheet 没有。

尝试SpreadsheetApp.openById("13ggBeSGGxhI291uPcIr0RudwxxKUigtNEN750Q2hCBM").getSheetByName(whateverYourResponseSheetNameIsAsAString);

至于为什么Spreadsheet class支持getValues()而不支持clearContents(),我不知道,好像不一致。对于前者,它隐含地是 运行 getActiveSheet()