在ogle电子表格的谷歌脚本编辑器上,我试图创建一个从电子表格中检索值并显示的网页。但是,它不会显示电子表格上链接的项目。它显示的是静态值,而不是链接。我做错了什么?下面给出的是我的代码。
以下代码在我的.gs表
function doGet() {
return HtmlService
.createTemplateFromFile('Index')
.evaluate()
.setSandboxMode(HtmlService.SandboxMode.IFRAME);
}
function getData() {
return SpreadsheetApp
.openById('abcdef')
.getActiveSheet()
.getDataRange()
.getValues();
getURL();
}
function getURL() {
var range = SpreadsheetApp.getActiveSheet().getActiveCell();
var links = SpreadsheetApp.getActiveRange().getFormulas();
//logs - Google
var values = range.getValues();
//logs - =HYPERLINK("http://www.google.com", "Google")
var formula = range.links;
//simple regex to get first quoted string
var url = /"(.*?)"/.exec(formula);
//logs - http://www.google.com
return url;
}
我的index.html有以下代码
<? var data = getData(); ?>
<table>
<? for (var i = 0; i < data.length; i++) { ?>
<tr>
<? for (var j = 0; j < data[i].length; j++) { ?>
<td>
<a id="button" href=#><?= data[i][j] ?> </a>
</td>
<? } ?>
</tr>
<? } ?>
</table>
玩上面Sandy的代码时,我发现大多数URL都被拒绝了,原因有很多(非https、同源等),所以我查看了文档,并以这个版本结束,该版本包括target="_blank"
参数,并打开了我尝试过的所有URL。
<? var data = getData(); ?>
<table>
<? for (var i = 0; i < data.length; i++) { ?>
<tr >
<? for (var j = 0; j < data[i].length; j++) { ?>
<td > <a id="button" href=" <?= data[i][j] ?> " target="_blank"> <?= data[i][j] ?></a></td>
<? } ?>
</tr>
<? } ?>
</table>
还要注意,电子表格中的url必须为http://www.google.com为了工作,像www.google.com这样的简短表格是行不通的。