【问题标题】:How to get/extract the link and text of a Google sheet cell?如何获取/提取 Google 表格单元格的链接和文本?
【发布时间】:2020-04-22 23:40:52
【问题描述】:

我们能否从 Google 表格中创建的单元格中获取文本和链接 url,并使用公式或脚本将结果保存到 2 个单元格中:文本和 url?

【问题讨论】:

    标签: regex google-apps-script google-sheets hyperlink google-sheets-formula


    【解决方案1】:

    要从超链接获取 url,你需要脚本:

    function LINK(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
    }
    

    然后使用公式:

    =LINK(A1)
    

    或更短的脚本:

    function LINK(input) {
      var range = SpreadsheetApp.getActiveSheet().getRange(input);
      var url = /"(.*?)"/.exec(range.getFormulaR1C1())[1];
      return url;
    }
    

    用公式:

    =LINK("A1")
    

    或者没有脚本(如果你有超链接fx)你可以使用正则表达式:

    =REGEXEXTRACT(FORMULATEXT(A1), """(.+)"",")
    

    使用超链接获取文本:

    =""&A1
    

    或:

    =TO_TEXT(A1)
    

    【讨论】:

    • 建议的公式仅在例如单元格“A1”包含公式“=HYPERLINK()”时才有效,但当单元格仅在鼠标悬停时显示文本时根本不起作用,因为这是以我分享的截图为例。我将检查此问题是否与包含链接的单元格已合并这一事实有关
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-08
    • 1970-01-01
    相关资源
    最近更新 更多