Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 如何从google apps脚本中的数据单元格中检索超链接?_Google Apps Script_Google Sheets_Google Spreadsheet Api - Fatal编程技术网

Google apps script 如何从google apps脚本中的数据单元格中检索超链接?

Google apps script 如何从google apps脚本中的数据单元格中检索超链接?,google-apps-script,google-sheets,google-spreadsheet-api,Google Apps Script,Google Sheets,Google Spreadsheet Api,我正在使用SpreadsheetApp.getActiveRange().getValues();获取一系列单元格的值,但它不返回与该单元格关联的超链接,只返回文本。有没有办法获取超链接,或者我必须添加另一个包含url的字段 谢谢 更新:这就是我最终如何使用它来建立一个链接列表 <ul> <? var range = SpreadsheetApp.getActiveRange(); var data = range.getValues(); va

我正在使用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>

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

下面是一个非常简单的解决方案(无错误检查),说明如何通过脚本实现这一点。我怀疑您是从Excel或其他东西导入的,这就是您不容易看到超链接公式的原因

如果你有一个像这样的细胞-

然后,此脚本将允许您读取与其关联的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);
}

谢谢你让我走上了正确的方向。var links=SpreadsheetApp.getActiveRange().getFormulas();非常棒。它可以工作,但是对于任何匿名的人来说,什么是正确的部署方法呢?请注意,如果超链接有一个动态URL,这就不起作用了。