在 Google 表格电子表格中,我想显示一个从 HTML 创建的模式对话框,然后运行一个函数,然后自动关闭该 HTML 提示。
对话框应该一直停留到函数完成执行,然后自动消失。
这个过程必须每 3 小时重复一次,并且脚本需要像我一样运行(因为我有其他用户没有的编辑权限)所以简单的触发器可能不起作用(我读过你必须创建一个可安装的触发器如果您希望该功能以您的身份运行,而不是当前用户在给定时间的任何人)
我目前有:
- .gs 函数 Magic_Telling,使用 HTML 文件创建模式对话框
- 一个 HTML 文件 Prompt_Styling,其中包含提示的 css / html 样式。该 HTML 文件然后调用处理行的 .gs 函数 All_In
我的代码:
Magic_Telling 从 HTML 文件创建模式对话框。
function Magic_Telling() {
var UI = SpreadsheetApp.getUi();
var newline = '\n'
// Display a modal dialog box with custom HtmlService content.
var htmlOutput = HtmlService.createHtmlOutputFromFile('PromptStyling')
.setSandboxMode(HtmlService.SandboxMode.IFRAME)
.setWidth(300)
.setHeight(100);
UI.showModalDialog(htmlOutput, ' ');
}
Prompt_Styling HTML 文件,用于样式提示 + 运行将处理行的函数 All_In 的脚本
<html>
<head>
// some irrelevant stuff here
</head>
<script>
window.onload = function() {
google.script.run
.withSuccessHandler(closeDialog)
.All_In();
};
window.closeDialog = function() {
google.script.host.close();
};
</script>
</html>
All_In处理行的函数
function All_In() {
UnlockRowBlocks();
UnhideRowBlocks();
LockRowBlocks();
HideRowBlocks();
}
当我从脚本编辑器运行 MagicTelling 时,它运行良好。整个序列执行(显示提示,执行 All_In,提示消失)。完美的。
然后,我通过转到 Script Editor > Resources > Current project's triggers 创建了一个可安装的触发器,并添加了一个触发器以每 3 小时运行一次 Magic_Telling。(我认为这是一个“可安装的触发器”)
但我收到此错误消息:
无法从此上下文中调用 SpreadsheetApp.getUi()。
...当函数到达 Magic_Telling 的第一行时
我应该怎么做才能解决这个问题?