【发布时间】:2019-01-24 19:44:42
【问题描述】:
我过去多次使用createTemplateFromFile。它允许我使用包含方法,以便可以将 CSS 和 JavaScript 分解为不同的文件。但今天我似乎无法让它工作。下面是我绑定到电子表格的测试代码。任何想法为什么它不起作用?我使用该技术尝试了另一个带有自定义对话框的现有电子表格,它可以工作。
代码.gs
function onOpen() {
var ui = SpreadsheetApp.getUi();
var menu = ui.createMenu("Test");
menu.addItem("Test", "test");
menu.addToUi();
}
function test() {
try {
var html = HtmlService.createTemplateFromFile("HTML_Test");
Logger.log(html);
// was html.evaluate();
html = html.evaluate(); // correction
SpreadsheetApp.getUi().showSidebar(html);
}
catch(err) {
Logger.log(err);
}
}
HTML_Test:
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<select>
<option value="Doc1">Document 1</option>
<option value="Doc2">Document 2</option>
<option value="Doc3">Document 3</option>
</select>
</body>
</html>
日志
[19-01-24 09:54:51:240 PST] {}
[19-01-24 09:54:51:246 PST] Exception: Invalid argument: userInterface
【问题讨论】:
-
您需要从模板创建 HtmlOutput。评估不会改变 htmlTemplate,但会返回一个 HtmlOutput。
var htmlOutput=html.evaluate(); ..showSidebar(htmlOutput);
标签: google-apps-script web-applications sidebar