【问题标题】:Creating a Unique ID for each record on Form Submission为表单提交中的每条记录创建唯一 ID
【发布时间】:2021-06-05 04:44:44
【问题描述】:

我是 Google Apps 脚本的新手,刚刚开始了解它的工作原理。一个团队成员为我正在做的一些工作写了一个简单的脚本。该脚本本质上是在任何一组允许的用户(可能会有所不同)通过 Google 表单向“表单响应 1”电子表格提交输入时触发的。

基本上,我有一个用户填写然后提交的表单。提交后,脚本检查活动行,代码将单元格 W2 的编号加 1(这是一个“请勿编辑”单元格,并将 W2 替换为新编号,然后检查唯一 ID 字段是否在Active Row 为空,然后将其替换为连接的字母数字 ID。即,它为一组字母前缀添加前缀,并从同一表单上的单元格 W2 中获取数字输入以创建新的唯一 ID。

在团队成员离开之前,脚本一直运行良好,我从 Google 工作表中删除了她的访问权限,而脚本根本没有任何更改。我一直在争先恐后地试图弄清楚在那之后发生了什么,因为自从访问被删除后,当我没有对我的代码进行任何更改时。我搜索了很多不同的地方,似乎找不到问题所在。

如果我将它发布在新的谷歌表格上,它工作正常.. 但不是在已经有大约 900 个关键条目的这张表格上。

欢迎任何指导。脚本如下。帮助!

  //Logger.log(SpreadsheetApp.getActiveSpreadsheet().getUrl());

  //Logger.log(SpreadsheetApp.getActive().getUrl());

  

  // Get the active sheet
  var sheet = SpreadsheetApp.getActiveSheet();
  // Get the active row
  var row = sheet.getActiveCell().getRowIndex();
  // Get the next ID value.  NOTE: This cell should be set to the last record counter value
  var id = sheet.getRange("X2").getValue()+1;

  Logger.log("HKG0"+id);

  // Check if ID column is empty
  if (sheet.getRange(row, 1).getValue() == "") {
    // Set new ID value
    sheet.getRange(2, 24).setValue(id);
    sheet.getRange(row, 1).setValue("HKG0"+id);
  }
}

【问题讨论】:

  • 为什么你的 id 没有从最后一行获取值,否则即使 +1 也会返回重复的 id
  • 该代码假定活动单元格来自最后一行,并将 W2 替换为该行索引中的 +1.. 至少,它曾经.. 不是最干净的代码,我被告知..但它正在工作:(

标签: excel google-apps-script google-sheets form-submit unique-key


【解决方案1】:

如果您的代码在表单提交触发器之外运行,那么这应该适合您。

function formsubit(e) {
  Logger.log(JSON.stringify(e));
  var sheet = e.range.getSheet();
  var id = sheet.getRange("X2").getValue() + 1;
  if (sheet.getRange(e.range.rowStart, 1).getValue() == "") {
    sheet.getRange(2, 24).setValue(id);
    sheet.getRange(e.range.rowStart, 1).setValue("HKG0" + id);
  }
}

Logger.log 将帮助您了解有关事件对象的更多信息。您可以了解更多关于事件对象here

如果您要为每次提交寻找唯一 ID,请尝试:const id = new Date(e.values[0]).valueOf(); 这是自 1970 年 1 月 1 日以来的毫秒数

【讨论】:

  • 谢谢..会试试的。
猜你喜欢
  • 2017-06-04
  • 1970-01-01
  • 1970-01-01
  • 2012-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多