如何在引用特定范围的同时制作一个函数来提取Google表格中的新富文本链接?

How to make a function to extract the new rich text links in Google Sheets while referencing specific ranges?

提问人:Wind 提问时间:6/13/2020 更新时间:9/8/2022 访问量:1083

问:

前段时间,谷歌表格更改了富文本链接的添加,现在在公式中找不到链接了。就我个人而言,我非常不喜欢这种变化,因为我使用了一个自定义函数,该函数使用旧公式从单元格中提取超链接,而使用新的更改,我只是找不到一种方法来做到这一点。我还不是很擅长功能,主要是我尽可能详细地写题目的原因。

我需要做的是使用自定义公式从单元格中提取超链接,因为它需要在许多其他香草公式中使用。如何设置自定义函数/公式以根据范围提取新的超链接?

以下是我想提取链接的工作表: https://docs.google.com/spreadsheets/d/1JnSKQ7nd4J3NPRH4uSsOCYms-DF16j1pkCAuJeikToo/edit#gid=317867416

我想从正在发布的游戏中提取链接,因为我需要在其他地方使用这些链接,并且我还希望在需要时准备好导入它们。 我需要在另一个单元格中指定一个公式来提取这些链接。例如,它将根据我为其插入的范围提取新的富文本超链接。=GETURL(B6)

或者,是否可以配置文档,以便在插入时以旧格式创建链接?这样,我就可以尝试解决新设置,将来插入的链接将进入公式。=HYPERLINK

非常感谢!

函数 google-sheets 超链接 google-sheets-formula rtf

评论

0赞 Rafa Guillermo 6/15/2020
这回答了你的问题吗?应用脚本:如何从没有公式的单元格中获取超链接
0赞 Brandon 11/21/2020
我不认为 Google 表格具有从富文本超链接中提取 URL 的内置功能。因此,您可以使用 JavaScript 提取链接

答:

0赞 christianrana 9/8/2022 #1

我认为这个脚本会派上用场。 它提供了从超链接公式中检索 URL 的可能性。

  1. 转到脚本编辑器,然后创建一个新项目。
  2. 保存文件。
  3. 前往运行>linkURL以运行脚本。这将在 Google 表格中创建一个新函数。
  4. 假设单元格 A1 中包含超链接。转到任何单元格并键入 ,然后按 Enter。=linkURL(A1)

function linkURL(reference) {
  var sheet = SpreadsheetApp.getActiveSheet();
  var formula = SpreadsheetApp.getActiveRange().getFormula();
  var args = formula.match(/=w+((.*))/i);
  try {
    var range = sheet.getRange(args[1]);
  }
  catch(e) {
    throw new Error(args[1] + ' is not a valid range');
  }
  var formulas = range.getFormulas();
  var output = [];
  for (var i = 0; i < formulas.length; i++) {
    var row = [];
    for (var j = 0; j < formulas[0].length; j++) {
      var url = formulas[i][j].match(/=hyperlink("([^"]+)"/i);
      row.push(url ? url[1] : '');
    }
    output.push(row);
  }
  return output
}

评论

0赞 zzzzzzz 1/28/2023
我收到以下错误Syntax error: SyntaxError: Invalid regular expression: /=hyperlink("([^"]+)"/: Unterminated group line: 16 file: Code.gs