如何获取/提取Google表格单元格的链接和文本?

时间:2020-01-04 21:26:34

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

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

enter image description here

1 个答案:

答案 0 :(得分:2)

要从超链接获取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)

0