我正在使用以下命令加载模式对话框:
var html = HtmlService.createHtmlOutputFromFile('File')
.setSandboxMode(HtmlService.SandboxMode.IFRAME)
.setWidth(1000)
.setHeight(700);
SpreadsheetApp.getUi()
.showModalDialog(html, 'My Page');
现在,在File.HTML中,我想加载另一个带有CSS设置的超文本标记语言文件,我该怎么做?
我尝试使用scriptlet在HtmlTemplate
中包含它,但不起作用:
<?!= include('File'); ?>
编辑:
我在code.gs中定义了include函数:
function include (file) {
return HtmlService.createTemplateFromFile(file).evaluate().getContent();
}
发布于 2014-12-17 02:42:30
问题是您使用的是:
createHtmlOutputFromFile
而不是:
createTemplateFromFile
您需要创建一个模板:
这就是你所看到的:
scriptlet未运行,但被解释为文本。
这是您想要看到的:
下面是代码应该是什么样子:
Code.gs
// Use this code for Google Docs, Forms, or new Sheets.
function onOpen() {
SpreadsheetApp.getUi() // Or DocumentApp or FormApp.
.createMenu('Dialog')
.addItem('Open', 'openDialog')
.addToUi();
}
function openDialog() {
var html = HtmlService.createTemplateFromFile('index')
.evaluate();//This is necessary
SpreadsheetApp.getUi() // Or DocumentApp or FormApp.
.showModalDialog(html, 'Dialog title');
}
function include(File) {
return HtmlService.createHtmlOutputFromFile(File).getContent();
};
index.html
<?!= include('File'); ?>
Hello, world!
<input type="button" value="Close"
onclick="google.script.host.close()" />
File.html
<div>
This is a test. it worked!
</div>
基本上,你需要改变:
var html = HtmlService.createHtmlOutputFromFile('index')
至:
var html = HtmlService.createTemplateFromFile('index')
从文件创建模板。
我还将代码更改为:
function openDialog() {
var html = HtmlService.createTemplateFromFile('index')
.evaluate()
.setSandboxMode(HtmlService.SandboxMode.IFRAME);
原始答案:
include
不同于keyword
或内置函数。您需要在名为include
的.gs
脚本文件中创建一个函数。
function include(filename) {
return HtmlService.createHtmlOutputFromFile(filename).getContent();
};
此外,您不能将HTML服务和UI服务混合在一起。我不知道这是不是你想要做的,但我想我应该提一下。
这里的文档中描述了您要完成的任务:
https://stackoverflow.com/questions/27510858
复制相似问题