返回

如何防止 Google 表格数据重复?分步指南解决方法

javascript

防止 Google 表格数据重复:分步指南

问题陈述

当使用 Google Apps 脚本将数据提交到 Web 表单时,防止重复项对于维护数据完整性和准确性至关重要。本文将指导你如何防止将重复数据添加到 Google 表格的“Statuses”工作表中,该工作表包含“包裹”和“状态”列。

解决方案

1. 识别重复项

在添加新数据之前,我们需要找出表格中是否存在匹配的记录。为此,我们将编写一个名为 isDuplicateStatus 的 Apps 脚本函数:

function isDuplicateStatus(parcel, status) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var statusSheet = ss.getSheetByName("Statuses");
  var dataRange = statusSheet.getRange(3, 1, statusSheet.getLastRow() - 2, statusSheet.getLastColumn());
  var data = dataRange.getValues();
  
  for (var i = 0; i < data.length; i++) {
    if (data[i][0] === parcel && data[i][1] === status) {
      return true; // 找到重复的状态提交
    }
  }

  return false; // 未找到重复的状态提交
}

此函数检查“Statuses”工作表中的每一行,如果找到匹配,则返回 true

2. 阻止重复项

识别重复项后,我们需要阻止其添加到表格中。在 doPost 函数中,我们将检查重复项并采取适当的操作,例如显示错误消息或要求用户确认:

function doPost(e) {
  var parcel = e.parameter.parcel.toString();
  var status = e.parameter.status.toString();

  // 检查是否重复状态
  if (isDuplicateStatus(parcel, status)) {
    return ContentService.createTextOutput("Duplicate status submission found. Record not added.");
  } else {
    // 添加记录到表格中
    addRecord(parcel, status);
    return ContentService.createTextOutput("Record Added");
  }
}

注意事项

  • 确保“Statuses”工作表具有包含“包裹”和“状态”列的结构。
  • 定期检查和清理表格以删除重复项。
  • 考虑使用唯一标识符,如时间戳或哈希函数,以进一步防止重复。

结论

通过遵循这些步骤,你可以有效地防止重复项添加到“Statuses”工作表中,从而确保数据的准确性和完整性。

常见问题解答

  • 我该如何找到重复项?

    • 使用 isDuplicateStatus 函数。
  • 如何阻止重复项?

    • doPost 函数中检查重复项并采取相应操作。
  • 需要检查所有行吗?

    • 不,只检查最后 2 行(标题行以下)。
  • 我可以使用其他方法来防止重复吗?

    • 是的,例如使用唯一标识符或在表格中使用条件格式规则。
  • 防止重复有多重要?

    • 至关重要,它确保了数据的准确性和完整性。