我正在开发一个Google App Script项目,该项目将直接在Google表格中使用,HTML文件作为对话框。我的项目将混合使用.gs文件以及用于数据输入的HTML文件等。我正在尝试使用此处说明的方法:
创建全局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控制台奇怪地显示这些行,如下面的屏幕截图所示:
答案 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文件中工作。