弹出对话框的值是重复的

时间:2017-12-15 14:01:09

标签: javascript arrays google-apps-script google-sheets

我正在尝试创建一个google脚本,该脚本将扫描一个google工作表的特定列,并检查是否有任何新增内容是重复的。我想出了以下内容,但它无效。

function hasDuplicates() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("Customer and form Details");
  var array = sheet.getRange('B2:B' + lastRow).getValues();
  var valuesSoFar = [];

    for (var i = 0; i < array.length; ++i) {
        var value = array[i];
        if (value in valuesSoFar) {
          SpreadsheetApp.getUi().alert('Hello, world!');
        }
      else{
        valuesSoFar.push(value);
      }
    }
}

据我所知,上面的代码创建了一个名为array的数组,并用我感兴趣的特定范围填充它。然后我创建一个名为valuesSoFar的新的空数组。然后代码循环遍历列并依次检查该项是否已经被查看过,如果是,它会给您一个警报。如果没有,它会将其添加到新项目列表中并继续运行。

1 个答案:

答案 0 :(得分:0)

看起来有点像使用在线文档代码。

但缺少以下作业:

var lastRow = sheet.getLastRow();

或只是将lastRow替换为sheet.getLastRow()

<强>更新 我假设如果您的B列中确实存在任何重复项,则以下解决方案应该有效:

function hasDuplicates() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("Customer and form Details");
  var array = sheet.getRange('B2:B' + sheet.getLastRow()).getValues();
  var valuesSoFar = [];

  for (var i = 0; i < array.length; ++i) {
    var value = array[i][0];
    if (value in valuesSoFar) {
      SpreadsheetApp.getUi().alert('Hello, world!');
    } else {
      valuesSoFar.push(value);
    }
  }
}

如果它还没有工作,我很抱歉。

只要您无法提供有关您遇到的错误类型的任何信息,我就不再关注此事了。