【发布时间】:2020-02-22 19:46:05
【问题描述】:
我在 Rhino 上运行了一个非常大的项目,但是当我将其切换到 V8 时,其中一项基本功能中断了 - Google 表格中的侧边栏无法再打开。
基本架构:
A) 带有导入 GAS 库 (V8) 的脚本 (Rhino) 的 Google 表格 A。侧边栏在库中。
对
B) 带有导入 GAS 库 (V8) 的脚本 (V8) 的 Google 表格 B。侧边栏在库中。
此代码在库中(独立脚本文件,在 V8 中运行):
// called from parent script as LIB.showSidebar()
function showSidebar() {
try {
var ui = HtmlService.createTemplateFromFile("sidebar/sidebarClient.html")
.evaluate()
.setTitle("tools sidebar");
SpreadsheetApp.getUi().showSidebar(ui);
} catch (error) {
var ui = SpreadsheetApp.getUi();
ui.alert("Couldn't render sidebar: " + error);
return;
}
}
之前的库函数是通过“LIB”命名空间描述符从父 Sheet A/B 脚本运行的:
// simple trigger
function onOpen(e) {
buildMenu();
}
// builds menu
function buildMenu() {
SpreadsheetApp.getUi()
.createMenu("My menu")
.addItem("Open sidebar", "openSidebar")
.addToUi();
}
// opens sidebar
function openSidebar() {
LIB.showSidebar();
}
行为:
A) 一切正常,上面的代码按预期打开了工作表 A 中的侧边栏。
B)结果是一个警告显示:
“无法呈现侧边栏:异常:未找到。”
将工作表 B 中的脚本切换回 Rhino 即可解决问题,并且工作表 B 中的侧边栏也会打开。
因此,问题在于切换到 V8。
V8 上的问题是路径形式的文件名(“sidebar/sidebarClient.html”)吗?我正在使用 clasp 将文件同步到子文件夹中 - 这确实是一个巨大的项目,没有它我不能(或者拒绝)这样做。
我尝试使用带和不带 .html 扩展名的文件名,以及带和不带路径的文件名。行为是相同的(文件路径“sidebar/sidebarClient”、“sidebar/sidebarClient.html”、“sidebarClient”和“sidebarClient.html”的所有变体行为相同,在工作表 A 中打开,在工作表 B 中找不到) .
有人知道会发生什么吗?
【问题讨论】:
-
那么试试不带路径和纯 html 文件的纯
sidebarClient看看是否能解决问题? -
可能与this issue有关。
-
我创建了一个新问题:issuetracker.google.com/issues/150054572 我看到问题跟踪器充满了与 V8 相关的错误,所以我猜它只是列表中的另一个。 :(
-
您可以在下面的答案框中添加链接作为答案
标签: google-apps-script google-sheets v8