【问题标题】:Google Sheets 'Exception: Range not found' error for URL formula网址公式的 Google 表格“异常:未找到范围”错误
【发布时间】:2021-10-26 15:14:48
【问题描述】:

我有这个公式可以从带有超链接的单词中提取链接。现在,当我尝试将其移动到另一个电子表格并运行它时,我收到“异常:未找到范围”错误。我正在阅读这可能是因为我需要一个 getRange 的“getRangeList”,但它也不能这样工作。现在我得到“异常:参数(数字)与 SpreadsheetApp.Sheet.getRangeList 的方法签名不匹配。” 这是我正在使用的代码:

function URL(refrence) {
  var sheet = SpreadsheetApp.getActiveSheet();
  var formula = SpreadsheetApp.getActiveRange().getFormula();
  var a1 = formula.replace("=url(","");
  a1 = a1.replace(")","");
  var url = sheet.getRange(a1).getRichTextValue().getLinkUrl();
  return url
}

【问题讨论】:

  • 变量 a1 的范围值可能不正确。您有公式单元格的示例值吗?
  • a1 在技术上不是范围,而是公式中的 替换 值,它仍然不是有效范围。尝试使用getActiveRange() 而不是getRange(a1)
  • @RodrigoBiffi 如果我改变只是得到“TypeError:无法读取 null 的属性 'getLinkUrl'(第 6 行)。”

标签: google-apps-script google-sheets


【解决方案1】:

发现

  • getRange(a1) 部分不正确,因为变量 a1 包含无效的工作表范围。

建议

如果您的主要目标是轻松地从带有=HYPERLINK("http://www.google.com/","Google") 之类的超链接的单元格中提取 URL,您可以使用以下经过调整的脚本:

这些脚本来源于How to extract URL from Link in Google Sheets using a formula & Google Apps Script Regular Expression这些帖子的答案

此版本的脚本将仅显示来自 Apps 脚本编辑器日志结果的 url 值:

function URL() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var formula = sheet.getActiveRange().getFormula();
  var regExp = new RegExp("\"(.*)\",\"", "gm");
  var url = regExp.exec(formula)[1];
  Logger.log(url)
}

注意: 在运行之前,请确保在您的工作表上选择了带有超链接的单元格(在我的情况下,它位于单元格 A1 上)。

日志上的示例结果:

这个另一个版本将允许您在电子表格文件中将脚本用作自定义函数=URL()

function URL(refrence) {
  var regExp = new RegExp("\"(.*)\",\"", "gm");
  var url = regExp.exec(refrence)[1]
  return url
}

作为自定义函数的示例结果:

=URL(FORMULATEXT(A1))

参考:

FORMULATEXT function

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-15
    • 1970-01-01
    • 2014-11-11
    • 2012-07-22
    • 2020-05-28
    • 1970-01-01
    相关资源
    最近更新 更多