防止重复的数据从 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)
}
}
我有一个简单的 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)
}
}