GAS在模板化页面中嵌套脚本

时间:2017-12-19 14:59:20

标签: google-apps-script

试图弄清楚为什么这不起作用。页面的其余部分加载得很好但是在预期的菜单项中它只是说" HtmlOutput" - 没有按钮,没有链接,只有文字。 mBar div中没有​​任何内容显示 - 只是文本(" HtmlOutput")。我也尝试过打印并强行打印menuBar.html文件中的scriplet而没有运气。

Code.gs

function doGet(e) {
    var html = HtmlService
    .createTemplateFromFile('index')
    .evaluate()
    .setSandboxMode(HtmlService.SandboxMode.IFRAME);
    return html;
}

function include(file, appData) {

    var component = HtmlService.createTemplateFromFile(file);
    component.data = appData;
    return component.evaluate();

}

的index.html

<div id="mainContent" class="w3-hide">

    <!-- Menu Bar -->
    <?= include('menuBar', oUser)?>

</div>

menuBar.html

<div class="mBar">
    <a href="#" class="mBarItem">Select Period</a>
    <? if (data.isAdmin == true) { ?>
    <a href="#" class="mBarItem">Manage Periods</a>
    <a href="#" class="mBarItem">Manage Users</a>
    <? } ?>

</div>

1 个答案:

答案 0 :(得分:0)

include 函数应返回 string 类型,因此请改为:

function include(file, appData) {
    var component = HtmlService.createTemplateFromFile(file);
    component.data = appData;
    return component.evaluate().getContent();
}

编辑:

此外,您还需要使用force-printing scriptlets以避免转义所包含的HTML代码(请注意“”符号):

<?!= include('menuBar', oUser)?>