【发布时间】:2019-04-27 16:00:01
【问题描述】:
我有一个电子表格,它通过 onEdit 触发器调用独立脚本中的函数。独立函数有循环,可以在几秒钟内执行。如果用户在独立脚本运行时编辑另一行,则第二行的信息会与循环中第一行的信息混淆。
独立脚本中的代码是:-
var tasklistID="mytaslistid"
function getTasks() {
var tasks=Tasks.Tasks.list(tasklistID)
return tasks
}
电子表格中的代码是:-
function getTasks(){
TaskManagerScript.getTasks()
}
安装的 onEdit 触发器调用电子表格 getTasks 函数,该函数又调用独立的 getTasks 函数
注意:这是我的代码的简化版本。实际版本还过滤任务以从特定日期提取任务。这涉及遍历列表中的任务,这需要时间
所以我需要一种方法来阻止编辑电子表格,直到独立脚本中的函数完成执行。
谢谢
【问题讨论】:
-
这个问题太宽泛了,因为有几种方法可以做到这一点(更改电子表格共享设置、保护工作表/范围、使用 Apps 脚本锁定服务、使用模式对话框(已在答案中提及) )。
-
所以
TaskManagerScript是一个库。对吗? -
是的,它是一个图书馆
-
return true或来自getTasks()函数的内容。您可能只需要在我对getTasks()的回答中更改callStandaloneFunction()。安装的 onEdit() 应该运行另一个只打开我的模式对话框的函数。我的模态将调用getTasks()并在从getTasks()函数成功返回后关闭。 -
getTasks 函数需要在独立脚本中运行,否则您将获得用户的任务。我需要用户查看我创建的任务。另外据我了解,独立脚本无法在电子表格中打开 ui。
标签: google-apps-script google-sheets