【问题标题】:Google Script: Remove Duplicate using Standard Script without losing Hyperlink谷歌脚本:使用标准脚本删除重复而不丢失超链接
【发布时间】:2014-08-17 09:43:14
【问题描述】:

情况:

我有一个电子表格,许多用户在 20 左右修改它,每分钟添加和跟踪事件。

我有一个脚本可以将超链接添加到 A 列中。

列 (A) =HYPERLINK("https://www.example.com/id=12345";"12345")

注意:当我输入工单 ID 时,A 列中的每一行都会出现超链接。

问题:

  1. 当此脚本运行并删除重复数据的信息时,还要清除超链接,然后 A 列只有没有超链接的数据。

  2. 脚本删除内容而不是删除行。有时删除行,有时只删除行中的数据。

例如:

第 10 行:数据为 Test1
第 11 行:数据为 Test1
第 12 行:数据为 Test3

当脚本运行时,有时删除行和第 12 行直到第 11 行。但有时只删除第 11 行中的内容,第 12 行不移动。

我需要这个脚本执行以下操作:

  1. 删除重复行。
  2. Boxmsg 中的 Cell 是否可以指示重复数据?
  3. 没有丢失超链接。

脚本:

function removeDuplicates() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var data = sheet.getDataRange().getValues();
  var newData = new Array();
  for(i in data){
    var row = data[i];
    var duplicate = false;
    for(j in newData){
      if(row[0] == newData[j][0]){
        duplicate = true;
      }
    }
    if(!duplicate){
      newData.push(row);
    }
  }
  sheet.clearContents();
  sheet.getRange(1, 1, newData.length, newData[0].length).setValues(newData);
}

非常感谢。

【问题讨论】:

  • 您的问题模棱两可:标题提到了格式问题,但内容是关于未移动的行...您真正要的是什么?另外:请不要使用不适当的标签...(现在已经编辑)

标签: google-apps-script google-sheets


【解决方案1】:

第一个问题(以及您的问题标题中提到的问题)是您使用的脚本的正常结果。

脚本在电子表格中读取和写入,并且您的超链接是一个公式,因此当脚本在完成后将所有值(批量写入)写回工作表时清除它,您将不再有任何公式......只有值。

这会有点难以避免:

您应该首先阅读工作表并获取其中包含的所有公式,将该信息存储在每一行的某处,并引用它所属的行,然后在删除重复的行后,在其位置重写公式...

...但是由于行号将不再相同,因此您必须知道删除了哪一行并使用原始位置减去已删除的行并跳过在工作表中的公式检索工作表中的正确位置删除的行...

所有这一切看起来都非常复杂,所以我想最好完全改变你的重复搜索脚本,让它以不同的方式处理工作表,一起寻找重复值 AND 公式。

您应该尝试编写这样的脚本,并在遇到困难时寻求帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-30
    相关资源
    最近更新 更多