我有一个非常大的项目在 Rhino 上运行,但是当我将其切换到 V8 时,其中一项基本功能出现问题 - Google 表格中的侧边栏无法再打开。

基本架构:

A) Google 工作表 A,带有导入 GAS 库 (V8) 的脚本 (Rhino)。侧边栏位于库中。

对比

B) Google 工作表 B,其中包含导入 GAS 库 (V8) 的脚本 (V8)。侧边栏位于库中。

<小时 />

此代码位于库中(独立脚本文件,在 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) 结果是一个警报,显示:

"Couldn't render sidebar: Exception: Not found."

将工作表 B 中的脚本切换回 Rhino 可以解决该问题,侧边栏也会在工作表 B 中打开。

因此,问题在于切换到 V8。

V8 上路径形式的文件名是否存在问题(“sidebar/sidebarClient.html”)?我正在使用 clasp 将文件同步到子文件夹中 - 这确实是一个巨大的项目,没有它我就不能(或者更确切地说拒绝)这样做。

<小时 />

我尝试使用带或不带 .html 扩展名的文件名,以及带或不带路径的文件名。行为是相同的(文件路径“sidebar/sidebarClient”、“sidebar/sidebarClient.html”、“sidebarClient”和“sidebarClient.html”的所有变体行为相同,在工作表 A 中打开,在工作表 B 中找不到) .

有人知道会发生什么吗?

请您参考如下方法:

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


评论关闭
IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!