【问题标题】:Call showSidebar() from a cell in google spreadsheets从谷歌电子表格中的单元格调用 showSidebar()
【发布时间】:2020-01-27 15:13:13
【问题描述】:

作为用户 Serge insas 回答 here

UI Dialogs 不能由时间触发函数调用,它们必须由用户操作触发,即单击菜单项或调用显示 UI 的函数的某种按钮。

从单元格调用 showSidebar()showModalDialog() 怎么样?类似于下面的公式,当 A1 中的值大于 0 时应该自动打开侧边栏:

=if(A1>0;showSidebar();"nothing to show")

这可能吗?

这是我的脚本:

function onOpen() {
  SpreadsheetApp.getUi().createAddonMenu().addItem('Open Beeper', 'openBig').addToUi();
}

function openBig() {
  var htmlContent = HtmlService.createHtmlOutputFromFile('audioHtml').setTitle('Beeper');
  SpreadsheetApp.getUi().showSidebar(htmlContent);
}

我可以通过单击插件菜单中的项目来打开侧边栏,但当我从单元格调用 openBig() 时,我收到以下错误:

无法从此上下文中调用 SpreadsheetApp.getUi()。

我做错了什么?缺少什么?

【问题讨论】:

  • 不可能。自定义函数的权限/权限比时间触发器少得多

标签: javascript google-apps-script google-sheets-formula spreadsheet google-sheets-api


【解决方案1】:

大师是对的。你没有做错什么。简单地说,您不能从工作表本身(任何单元格)调用SpreadsheetApp.getUi()。它只允许从菜单的上下文中调用。

【讨论】:

  • 它与 onEdit 触发器一起工作正常。但是,如果使用 onChange(自动)触发器,它会发送上下文错误。
  • 那是因为 onEdit() 触发器只发生在用户编辑时。
  • 有些人一直在使用 onEdit 触发器从移动版 Google 表格运行函数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-11
  • 1970-01-01
相关资源
最近更新 更多