Google Apps脚本 - 包含外部文件无效的模板语句

时间:2016-09-13 18:52:33

标签: javascript html css google-apps-script

我试图使用外部CSS样式表。然而,我得到的是' *包括样式表* '在我的html侧边栏中渲染。我在code.gs文件中创建了include函数。为什么这不起作用?

的index.html

  <ListView>
    <ListView.ItemTemplate>
      <DataTemplate>
        <TextCell Text="{Binding nome}" />
      </DataTemplate>
    </ListView.ItemTemplate>
  </ListView>

Code.gs

<!DOCTYPE html>
<html>
 <head>
 <base target="_top">
 <?!= include('stylesheet'); ?>
 </head>
 <body>
  <script
   src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js">
  </script>
 </body>
</html>

stylesheet.html

function onOpen() {
 SpreadsheetApp.getUi()
 .createMenu('Form')
 .addItem('Open', 'openSidebar')
 .addToUi();
}
function include(filename) {
 return HtmlService.createHtmlOutputFromFile(filename)
  .getContent();
}
function openSidebar(){
 var htmlOutput = HtmlService.createHtmlOutputFromFile('Index');
 htmlOutput.setTitle('Customer Inquiry Form');
 SpreadsheetApp.getUi().showSidebar(htmlOutput);
}

1 个答案:

答案 0 :(得分:2)

此功能:

function openSidebar(){
 var htmlOutput = HtmlService.createHtmlOutputFromFile('Index');
 htmlOutput.setTitle('Customer Inquiry Form');
 SpreadsheetApp.getUi().showSidebar(htmlOutput);
}

您使用的是createHtmlOutputFromFile,它会提供 Index.html 的内容,但不会执行内部的scriptlets

要执行scriptlet,您需要创建HtmlTemplate,然后调用evaluate()方法,您的函数应如下所示:

function openSidebar(){
  var template = HtmlService.createTemplateFromFile('Index')
      .evaluate()
      .setTitle('Customer Inquiry Form')
 SpreadsheetApp.getUi().showSidebar(template);
}

同时删除 stylesheet.html 中值'的{​​{1}}:

gray