谷歌脚本防止重复数据提交



我是学习谷歌脚本的初学者。我需要使用谷歌脚本将数据从一张表提交到另一张表。当我单击submitData时,它应该检查它是否是以前输入的数据。如果之前输入了数据,则代码必须停止。如果它是新的条目;输出";床单有人能帮我找出错误吗?

编辑:我准备了一个生物数据格式。我将在我的学校朋友中分享这张谷歌表格,并要求填写他们的详细信息,然后单击"提交"按钮。我希望他们停止发送重复的数据。他们的身份号码将在";A3";单间牢房这些数据存储在";输出";床单标识号存储在列B中;A3";单元格数据与OUTPUT文件中的列B数据匹配,如果重复,则显示消息提示";重复";。

现在当我运行它时,数据提交到";输出";页甚至重复输入到"中的数据;A3";单间牢房

function submitData() {
var ss        = SpreadsheetApp.getActiveSpreadsheet();
var formSS    = ss.getSheetByName("input"); //Data entry Sheet
var datasheet = ss.getSheetByName("output");
var ttt       = formSS.getRange("A3").getValue();
var values    = ss.getSheetByName("output").getDataRange().getValues();
for (var i = 0; i < values.length; i++) {
var row = values[i];
if (row[1] == ttt) {  //column B of the "output" sheet has project IDs (Unique Number)

SpreadsheetApp.getUi().alert('Duplicate data. you need to click  update');
}
else
{  
var values = [[formSS.getRange("E2").getValue(),
formSS.getRange("A3").getValue()]],
datasheet.getRange(datasheet.getLastRow()+1, 1, 1, 2).setValues(values);
}
}
}  


;错误";当row[1] == ttttrue时,没有任何东西可以停止脚本执行。一个可能的fis是添加

return;

之后立即

SpreadsheetApp.getUi().alert('Duplicate data. you need to click  update');

此函数查看id是否与col B匹配,如果匹配则更新,如果不匹配则添加新行。

function submitOrUpdateData() {
const ss = SpreadsheetApp.getActive();
const ui = SpreadsheetApp.getUi();
const fsh = ss.getSheetByName("input");
const dsh = ss.getSheetByName("output");
const did = fsh.getRange("A3").getValue();//data id
const colB = dsh.getRange(1, 2, dsh.getLastRow(), 1).getValues();
let idx = colB.indexOf(did);
if (~idx) {
dsh.getRange(idx, 1, 1, 2).setValues([[fsh.getRange("E2").getValue(), fsh.getRange("A3").getValue()]]);//update
} else {
dsh.getRange(dsh.getLastRow() + 1, 1, 1, 2).setValues([[fsh.getRange("E2").getValue(), fsh.getRange("A3").getValue()]]);//new data
}
}

Bitwise Not(~(

最新更新