2015-02-09 50 views
1

我试图在作为Web应用程序发布的Google Apps Spreadsheet脚本中的主HTML文件中分离出我的javascript和样式表。我已经看到this answer这个问题,但我无法得到这个方法为我工作。Google Apps脚本Web应用程序:无法分离出css和js代码

当我在主HTML文件中有我的样式表和JavaScript时,它工作正常。当我尝试按照答案建议完全分开它们时,样式表和JavaScript代码不会被处理,而是调用“getContent()”的行会显示在我的浏览器中。它看起来像getContent()根本没有被执行。

我试过将我的代码从Spreadsheet移到独立的Web应用程序,但仍然有同样的问题。任何想法为什么它不适合我?谢谢!

从我Code.gs了一下:

function doGet() { 
     var output = HtmlService.createHtmlOutputFromFile('index'); 
     output.setSandboxMode(HtmlService.SandboxMode.IFRAME); 
     output.setTitle('Dashboard Tool'); 
     return output; 
    } 
function getContent(filename) { 
    Logger.log('getContent()'); 
    return HtmlService.createTemplateFromFile(filename).getRawContent(); 
} 

的index.html:

<?!= getContent("stylesheet") ?> 
    <div class='header'>Dashboard</div> 
    <div id=content> 
Content Here 
</div> 
<?!= getContent("javascript") ?> 

'stylesheet.html' 代码由风格标签包围, 'javascript.html' 代码被脚本标记包围。

回答

2

您在createHtmlOutputFromFile()中忘记了evaluate(),您也应该使用createTemplateFromFile。

var output = HtmlService.createTemplateFromFile('index').evaluate(); 

由于@布赖恩-P指出,你所需要的,而不是“输出”模板',在评估对scriplets <?!= ?>发生。

+0

谢谢!看起来我不得不对模板化的HTML做一些评论,但是这会让它工作。 – Carrie 2015-02-10 01:17:32

+0

为什么要用'createTemplate()'来代替? – 2015-04-15 18:04:43

+0

@BryanP它被认为是createTemplateFromFile,最终只写了前两个单词,但在下面的代码中写入了正确的内容。编辑。 – Kriggs 2015-04-15 18:07:20

1

在这行代码:

return HtmlService.createTemplateFromFile(filename).getRawContent(); 

createTemplateFromFile()正在使用。该方法用于创建原始模板,但getContent()函数不适用于此目的。使用方法:

return HtmlService.createHtmlOutputFromFile(filename).getContent(); 
+1

在第一个答案中建议更改后,似乎我在此答案中引用的原始代码正常工作。虽然我需要刷新模板,但您的答案确实有意义,所以我也做了这一改变。 – Carrie 2015-02-10 01:20:37