10

我正在使用 SpreadsheetApp.getActiveRange().getValues(); 获取一系列单元格的值,但它不返回与该单元格关联的超链接,只返回文本。有什么方法可以获取超链接,还是我必须在其中添加另一个带有 url 的字段?

谢谢。

更新:这就是我最终使用它来构建链接列表的方式。

<ul>
    <?
    var range = SpreadsheetApp.getActiveRange();
    var data = range.getValues();
    var links = range.getFormulas();

    for(var i=1; i < data.length; i++){
        if(data[i][0] !== ''){
            ?>
            <li><a href="<?= links[i][0].split("\"")[1]; ?>"><?= data[i][0]; ?></a></li>
            <?
        }
    }
    ?>
</ul>
4

1 回答 1

13

与单元格文本关联的超链接由公式表示。Google 电子表格会自动将任何 URL 转换为可点击的超链接,但在这些情况下,不使用公式并且文本和 URL 相同。

下面是一个非常简单的解决方案(无错误检查),关于如何通过脚本获得它。我怀疑你是从 Excel 或其他东西导入的,那是你看不到 HYPERLINK 公式。

如果你有一个看起来像这样的单元格 -

带有超链接的单元格

然后此脚本将让您读取与其关联的 URL -

function getURL() {
  var range = SpreadsheetApp.getActiveSheet().getActiveCell();

  //logs - Google
  Logger.log(range.getValue());

  //logs - =HYPERLINK("http://www.google.com", "Google")
  Logger.log(range.getFormulaR1C1());

  //simple regex to get first quoted string
  var url = /"(.*?)"/.exec(range.getFormulaR1C1())[1];

  //logs - http://www.google.com
  Logger.log(url);
}
于 2012-12-12T20:28:44.803 回答