如何在显示为对话框的HTML文件中包含全局样式/ javascript?

时间:2016-11-11 15:17:57

标签: javascript html css google-apps-script include

我正在开发一个Google App Script项目,该项目将直接在Google表格中使用,HTML文件作为对话框。我的项目将混合使用.gs文件以及用于数据输入的HTML文件等。我正在尝试使用此处说明的方法:

https://developers.google.com/apps-script/guides/html/best-practices#separate_html_css_and_javascript

创建全局JavaScript和CSS模块,我可以将其包含在我的HTML文件中,而不是在整个地方剪切和粘贴内联代码。这将主要用于捕获表单数据,序列化它,然后通过此处(以及许多其他地方)概述的方法将其保存到表格的数据保存例程:http://railsrescue.com/blog/2015-05-28-step-by-step-setup-to-send-form-data-to-google-sheets/

我遇到的问题是尝试从我的HTML文件中调用“include”语句,即:

<?!= include('JavaScript'); ?>

当我在电子表格上创建菜单以将我的HTML文件显示为对话框时,它不起作用 - 包含行的文本在对话框中显示为文字输出,并且代码似乎没有得到包括(不在范围内)。

我知道Google示例主要是针对通过网络应用程序进行删除的网页,但我想在电子表格中使用我的HTML文件作为对话框(例如,从菜单或侧边栏) - 感觉很好,很整洁我。但是,如果我无法获得包含工作,我的代码库将成为一场噩梦,在整个应用程序中标准化CSS将非常非常困难。我不想一直切割和粘贴。

那么,这个<?!标签背后的秘诀是什么,以及当它们被称为对话框时,为什么它不会在我的HTML文件中起作用?很明显,这些行与开始不同(可能不是很糟糕,但它们不起作用),因为Google Scripting控制台奇怪地显示这些行,如下面的屏幕截图所示:

enter image description here

2 个答案:

答案 0 :(得分:1)

请尝试添加:

<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>

更多信息可在Adding Style Sheets中找到。

答案 1 :(得分:0)

想出来。我没有正确理解HTML作为对话框提供的方式。我在自定义菜单选项后面使用它:

var html = HtmlService.createHtmlOutputFromFile(htmlFileName);

当我应该使用更动态的时候:

var html = HtmlService.createTemplateFromFile(htmlFileName).evaluate();

后者生成一个用户界面对象,当我使用showModalDialog()(或showSidebar())显示对象时,执行服务器端脚本并正确包含所有内容。

我对如何创建用户界面对象有一个完全的误解,所以现在所有脚本都在我的HTML文件中工作。