【问题标题】:HTML Service does not open a sidebar in V8 runtimeHTML 服务不会在 V8 运行时打开侧边栏
【发布时间】: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


【解决方案1】:

我还在 Google 的问题跟踪器上打开了一个问题,目前仍未解决:https://issuetracker.google.com/issues/150054572

【讨论】:

    猜你喜欢
    • 2022-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-04
    • 1970-01-01
    相关资源
    最近更新 更多