google-apps-script - 既然链接没有反射(reflect)为超链接,如何从单元格中提取链接?

标签 google-apps-script google-sheets

“插入链接”没有产生 =HYPERLINK(’’,’’)了。
之前,如果您使用值“X”链接单元格。它被转换成公式=HYPERLINK(*link*,’X’)两天前“插入链接”改变了。
现在单元格的内容保持不变,只是加了下划线。
使用脚本,既然单元格的值和公式都不包含此信息,我该如何从单元格中提取链接?
我搜索了文档,但我能找到的与链接相关的唯一方法是 setShowHyperlink(showHyperlink)

最佳答案

我可以确认你的情况。在这种情况下,似乎可以从 RichTextValue 检索超链接。目的。也就是说,我认为规范已更改为使用 RichTextValue 为文本提供超链接。 .

所以作为一个示例,它假设如下。

  • X的文放在单元格“A1”中。
  • 此单元格手动链接到类似 https://www.google.com 的 URL。 .

  • 在这种情况下,单元格没有 =HYPERLINK("https://www.google.com","X") .用于从这种情况检索 URL 的示例脚本如下。

    示例脚本:
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
    var url = sheet.getRange("A1").getRichTextValue().getLinkUrl();
    console.log(url);
    
  • 在这种情况下,URL 链接到 URL 中的整个文本。所以可以使用上面的脚本。

  • 笔记:
  • 在当前阶段,可以在一个单元格中的文本中添加多个超链接。例如,当将 2 个 URL 放入单元格中的文本时,您可以使用以下示例脚本。在此示例中,文本为 url1, url2被放入单元格“A1”,并且 url1url2与每个链接相关联。
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
    var RichTextValue = SpreadsheetApp.newRichTextValue()
      .setText("url1, url2")
      .setLinkUrl(0, 4, "https://url1/")
      .setLinkUrl(6, 10, "https://url2/")
      .build();
    sheet.getRange("A1").setRichTextValue(RichTextValue);
    
  • 从单元格中的文本检索多个 URL 时,您可以使用以下示例脚本。
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
    var range = sheet.getRange("A1");
    var RichTextValue = range.getRichTextValue().getRuns();
    var res = RichTextValue.reduce((ar, e) => {
      var url = e.getLinkUrl();
      if (url) ar.push(url);
      return ar;
    }, []);
    console.log(res);
    

  • 引用:
  • getRichTextValue()
  • getRichTextValues()
  • Class RichTextValue

  • 2020 年 6 月 13 日更新:

    来自 June 12, 2020 的更新, getLinkUrl() 的文档和 setLinkUrl(linkUrl) 被添加到官方文件中。

    关于google-apps-script - 既然链接没有反射(reflect)为超链接,如何从单元格中提取链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61787891/

    相关文章:

    google-sheets - Google 表格当前用户

    javascript - 相当于 Google Apps 脚本中的 "GoTo"(相当于 VBA-GAS)

    pdf - 在 Apps 脚本中将 Google 表格转换为 PDF 格式时文件大小会增加

    regex - 如何使用正则表达式将条件格式规则应用于整行

    google-sheets - 在 Google 电子表格中隐藏行号和列字母

    arrays - 谷歌电子表格: If certain value in column exists + formula

    google-apps-script - 如何在 Google 表格中隐藏除一张以外的所有表格?

    javascript - 如何连接一些函数以获得结果

    javascript - 以编程方式更改 Google 应用程序脚本的时区

    java - 通过服务器读取/写入 Google 表,无需使用 OAuth