google脚本防止重复数据提交

问题描述 投票:0回答:3

我是学习谷歌脚本的初学者。 我需要使用谷歌脚本将数据从一张纸提交到另一张纸。当我点击

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);
    }
  }
}  


      
google-apps-script google-sheets duplicates
3个回答
2
投票

“错误”是,当

row[1] == ttt
true
时,没有任何东西可以停止脚本执行。一种可能的方法是添加

return;

紧接着

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

0
投票

此函数查看 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
  }
}

按位非 (~)


0
投票

@Sathya,您能分享一下解决方案吗?应用程序脚本新功能(今天开始)。

© www.soinside.com 2019 - 2024. All rights reserved.