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

Win*_*ind 5 rtf function hyperlink google-sheets google-sheets-formula

前段时间,谷歌表格改变了富文本添加链接,现在公式里找不到链接了。我个人非常不喜欢这种变化,因为我使用一个自定义函数从带有旧公式的单元格中提取超链接,而在新的变化中,我找不到这样做的方法。我对函数还不是很了解,主要是我的问题标题写的越详细越好。

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

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

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

或者,是否可以配置文档,以便在插入时以旧格式生成链接?通过这种方式,我可以尝试解决新设置,而未来插入的链接将=HYPERLINK改为进入公式。

非常感谢!

小智 0

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

\n
    \n
  1. 转到脚本编辑器,然后创建一个新项目。
  2. \n
  3. 保存文件。
  4. \n
  5. 前往 Run > linkURL 运行脚本。这将在表格中创建一个新函数。
  6. \n
  7. 让\xe2\x80\x99s 说单元格A1 中有超链接。转到任意单元格并键入=linkURL(A1),然后按 Enter。
  8. \n
\n
\n
function linkURL(reference) {\n  var sheet = SpreadsheetApp.getActiveSheet();\n  var formula = SpreadsheetApp.getActiveRange().getFormula();\n  var args = formula.match(/=w+((.*))/i);\n  try {\n    var range = sheet.getRange(args[1]);\n  }\n  catch(e) {\n    throw new Error(args[1] + ' is not a valid range');\n  }\n  var formulas = range.getFormulas();\n  var output = [];\n  for (var i = 0; i < formulas.length; i++) {\n    var row = [];\n    for (var j = 0; j < formulas[0].length; j++) {\n      var url = formulas[i][j].match(/=hyperlink("([^"]+)"/i);\n      row.push(url ? url[1] : '');\n    }\n    output.push(row);\n  }\n  return output\n}\n
Run Code Online (Sandbox Code Playgroud)\n