首页 > 解决方案 > 如何计算新的 Google 工作表链接

问题描述

我很久以前就问过这个问题并得到了很好的答案:“Google 表格:计算价值 > 0 的 HYPERLINKS 的数量” Google 表格:计算价值 > 0 的 HYPERLINKS 的数量

现在谷歌已经改变了他们的超链接在一个单元格中插入多个超链接 - 很好......但他们也不再以这种方式插入它了:

=HYPERLINK("http:/www.test.com", 100") 

所以现在我的老问题又出现了:How to count number of cells with HYPERLINKS where value > 0

标签: google-apps-scriptgoogle-sheetshyperlink

解决方案


我相信你的目标如下。

  • 您想从 Google 电子表格的工作表上的某个范围内检索超链接的数量。
  • 您希望通过修改以下 Google Apps 脚本来实现此目的。参考

    function countLinks(rangeNotation) {
      var sheet = SpreadsheetApp.getActiveSheet();
      var formulas = sheet.getRange(rangeNotation).getFormulas()[0];
      var values = sheet.getRange(rangeNotation).getValues()[0];
      return formulas.reduce(function(acc, formula, i) {
        return acc += (/^=HYPERLINK/i.test(formula) && values[i] > 0 ? 1 : 0);
      }, 0);
    }
    

为此,这个答案怎么样?

问题及解决方案:

2020 年 5 月,Google 电子表格中使用超链接的规范似乎已更改。这样,不幸的是,上面的脚本现在不能使用。但是,在当前阶段,可以使用类 RichTextValue 检索超链接。所以,在现阶段,为了达到你的目的,需要对上面的脚本进行如下修改。

修改后的脚本:

function countLinks(rangeNotation) {
  var sheet = SpreadsheetApp.getActiveSheet();
  var richTextValues = sheet.getRange(rangeNotation).getRichTextValues();
  return richTextValues.reduce((c, row) => {
    row.forEach(col => {
      col.getRuns().forEach(r => {
        if (r.getLinkUrl()) c++;
      });
    });
    return c;
  }, 0);
}
  • 当您将此脚本用作自定义函数时,请将以下公式放入单元格中。在这种情况下,将返回单元格“A1:A10”中的超链接数。

    =countlinks("A1:C10")
    

笔记:

  • HYPERLINK在这个修改后的脚本中,可以检索使用和不使用的超链接的数量。
  • 请将此脚本与 V8 一起使用。

参考:

添加:

当我看到您的示例电子表格时,我可以理解您的问题的原因。您的问题的原因是由于数字值用于超链接。在当前阶段,似乎getRichTextValues无法检索数值。HYPERLINK这样,只检索到 number of 。我认为这可能是一个错误。所以我已经将此问题发布到问题跟踪器。参考当这个问题得到解决时,我认为上面的示例脚本可能会起作用。

顺便说一句,无法检索具有没有 URL 的超链接的单元格。请注意这一点。

解决方法:

作为当前的解决方法,例如,当单元格格式从数字更改为文本时,可以看到计数。但是在这种情况下,无法检索具有没有 URL 的超链接的单元格。请注意这一点。


推荐阅读