【问题标题】:links from spreadsheet not displaying in google html service page来自电子表格的链接未显示在 google html 服务页面中
【发布时间】:2015-06-30 20:07:10
【问题描述】:

在 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>

【问题讨论】:

    标签: javascript php html google-apps-script google-sheets


    【解决方案1】:

    在上面使用 Sandy 的代码时,我发现大多数 url 因多种原因被拒绝(非 https、相同来源等),所以我查看了文档并以包含 target="_blank" 参数的这个版本结束,它打开了所有我试过的网址。

    <? 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>
    

    另请注意,电子表格中的网址必须采用 http://www.google.com 的形式才能使用,像 www.google.com 这样的短格式将无法使用。

    【讨论】:

    • 和 @sandy 没用。它说“您请求的页面无效”这是我尝试的另一个代码,然后将其添加到 getData 函数中。仍然没有用。有什么建议么? ' 函数 getLinks(){ var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheets()[0]; var range = sheet.getRange("I2"); var 公式 = range.getFormulaR1C1(); for (var i in formulas) { for (var j in formulas[i]) { return formulas[i][j]; } } }'
    猜你喜欢
    • 1970-01-01
    • 2019-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-31
    • 1970-01-01
    • 2021-07-26
    • 1970-01-01
    相关资源
    最近更新 更多