在Google Apps脚本网络应用中使用项目Javascript和CSS文件?

Alf*_*ton 15 google-apps-script

如果我在Google Apps脚本中创建一个简单的HTML网络应用,请执行以下操作:

function doGet() {
    return HtmlService.createHtmlOutputFromFile("index.html");
}
Run Code Online (Sandbox Code Playgroud)

和index.html看起来像这样:

<script src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
<div>Test</div>
Run Code Online (Sandbox Code Playgroud)

是否可以添加JS和CSS文件作为项目的一部分,并使用脚本和链接标记包含它们,还是必须在其他地方内联/托管?

Nic*_*oux 47

这是我发现有用的解决方法:

  1. 将此功能添加到服务器端Javascript:

    function getContent(filename) {
        return HtmlService.createTemplateFromFile(filename).getRawContent();
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将第二个"html"文件添加到项目中,该文件仅包含被适当的JS或CSS包围<script><style>标记.

    <!-- myscript.js.html -->
    <script>
        alert("Script included!");
    </script>
    
    Run Code Online (Sandbox Code Playgroud)
  3. 现在,您可以将脚本包含在主HTML模板中,如下所示:

    <?!= getContent("myscript.js") ?>
    
    Run Code Online (Sandbox Code Playgroud)

这样,您可以将JS和CSS拆分为任意数量的文件,并将它们全部从Apps脚本项目中访问.

  • 那是因为当问题得到回答时,这是唯一有效的解决方案。谷歌在“事后”添加了此功能,并且OP从未改变已接受的答案。这就是存在投票的原因之一——如果接受的答案已经过时,社区知道首选的解决方案是什么。 (2认同)

Bil*_*ill 7

Google 在此提供了类似的解决方案.

基本上,他们建议您将此函数添加到.gs文件中:

function include(filename) {
  return HtmlService.createHtmlOutputFromFile(filename)
      .setSandboxMode(HtmlService.SandboxMode.IFRAME)
      .getContent();
}
Run Code Online (Sandbox Code Playgroud)

并将这些中的一个或两个添加到.html文件中:

<?!= include('Stylesheet'); ?>
<?!= include('JavaScript'); ?>
Run Code Online (Sandbox Code Playgroud)

引号中的名称当然是指包含JS或CSS代码<script><style>标签的单独.html文件.


shh*_*shh 2

目前,无法将 CSS 和 JS 脚本纳入 Google Apps 脚本项目。您必须将其托管在其他地方并在模板中指向 URL。