我有一个简单的Google表单,它是通过Google Apps脚本生成的,它将数据存储到脚本创建的电子表格中。当用户通过Google表单提交数据时,我想检查电子邮件是否在电子表格中重复,如果重复,那么我想防止插入。对此我的任何指导将不胜感激。我相信onFormSubmit
上的FormsApp
在将数据插入电子表格后运行。如果是这种情况,我将如何处理副本?
如果您将所有响应都存储在destination spreadsheet中,则无法防止插入。
您可以做的是创建一个自定义电子表格,您可以在其中手动插入您选择的表单响应-基于respondent email
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)
}
}