防止重复的数据从 Google 表单填充到 Google 电子表格中

Prevent data from populating into a Google Spreadsheet from Google Forms when it's a duplicate

我有一个简单的 Google 表单,它是通过 Google Apps 脚本生成的,并将数据存储到脚本创建的电子表格中。当用户通过 Google 表单提交数据时,我想检查电子表格中的电子邮件是否重复,如果是,那么我想阻止插入。任何关于我如何能够做到这一点的指导将不胜感激。我相信 FormsApp 上的 onFormSubmit 在数据插入电子表格后运行。如果是这样,我将如何处理重复项?

  • 如果您设置了一个 destination spreadsheet 存储所有回复的地方,则无法防止插入。

  • 您可以创建一个自定义电子表格,您可以在其中手动插入您选择的表单回复 - 基于 respondent email

  • 为此,您需要创建绑定到 Google 表单的脚本,该脚本将在 onFormSubmit 上检索并触发最新回复,将回复邮件与之前回复的邮件进行比较,并根据结果是否将响应插入到您选择的电子表格中。

示例代码:

function myFunction() {
  var form=FormApp.getActiveForm();
  //set up the collection of emails
  form.setCollectEmail(true);
  var responses=form.getResponses();
  var lastResponse=responses[responses.length-1];
  var lastRespondent=lastResponse.getRespondentEmail();
  var duplicate=false;
  for(var i=0;i<responses.length-1;i++){
    if(responses[i].getRespondentEmail()==lastRespondent){
      duplicate=true;
    }
  }
  if(duplicate==false){
    var mySheet=SpreadsheetApp.openById('SPREADSHEET_OF_YOUR_CHOICE').getSheetByName('Sheet1');
    var items=[];
    for(var j=0;j<lastResponse.getItemResponses().length;j++){
      items.push(lastResponse.getItemResponses()[j].getResponse())
    }
    mySheet.appendRow(items)   
  }
}