google-apps-script - 如何在其他用户将使用的独立脚本中引用我的任务列表
问题描述
我有一个电子表格链接到从我的任务列表中导入任务的独立脚本。当我是用户时它工作正常,但在共享用户帐户中不起作用。
独立脚本中的代码是
function getTasks() {
var tasklistID="mytasklistid";
var tasks=Tasks.Tasks.list(tasklistID);
return tasks
}
绑定脚本中的代码是
function getTask(){
var tasks = TaskManagerScript.getTasks()
Browser.msgBox(tasks)
}
当我在我的帐户中运行代码时,我会按预期从具有指定 ID 的任务列表中获取任务。但是当我从另一个用户帐户运行它时,我会得到另一个用户的任务列表。
当其他用户运行代码时,如何使代码从具有指定 ID 的列表中返回任务。
解决方案
- 您正在使用电子表格的容器绑定脚本,并且绑定脚本安装了一个库。
- 电子表格由用户共享。您是电子表格的所有者。
- 您想让用户使用您的任务 ID。
- 您希望通过 OnEdit 事件触发器运行脚本。
如果我的理解是正确的,这个答案怎么样?
OnEdit 事件触发器作为电子表格的所有者运行。因此,当用户编辑电子表格时,脚本会使用您的任务列表 ID 运行。但从你的问题来看,它是when I run it from a different user account I get the the tasklist of the other user.
. 我可以确认在我的环境中,当用户编辑共享电子表格时,脚本以所有者(我)身份运行,并且可以使用我的任务列表 ID。不幸的是,我无法复制您的情况。那么,为了确认这种情况,可以测试下面的流程吗?
测试示例流程:
- 创建新的电子表格。
- 打开脚本编辑器并安装
TaskManagerScript
. - 在高级 Google 服务中启用 Tasks API。
将脚本放入脚本编辑器。脚本如下。
function getTask(e) { var tasks = TaskManagerScript.getTasks(); e.source.appendRow([JSON.stringify(tasks)]); }
将 OnEdit 触发器安装到
getTasks()
.- 为了授权,请
getTasks()
通过脚本编辑器运行并授权范围。- 在这种情况下,会发生错误。但别担心。此操作仅用于授权。
- 可能不需要此授权。但这只是以防万一。
- 将电子表格共享给不是您帐户的用户。
- 用户编辑工作表。
通过上述流程,当用户编辑工作表时,将返回使用您的任务列表 ID 检索到的结果。
笔记:
- 当 OnEdit 事件触发器通过用户编辑单元格来运行脚本时,脚本将作为电子表格的所有者运行。但是,当通过单击工作表上的按钮和自定义菜单来运行脚本时,脚本将作为每个用户运行。请注意这一点。
参考:
推荐阅读
- regex - RegExp 匹配传统的提交语法
- react-native - react-native 在创建启动画面时显示意外的令牌
- python - 在matplotlib python3中向3d图形添加线
- php - 在数组中搜索特定值
- java - 使用 getInstance 与公共声明的单例
- c++ - 如何使用 C++ 使 BMP 图像变亮
- python - 将从 os.walk 接收到的路径放入 cmd 以在 Windows 终端上运行 - python
- java - 如何在 Gradle 中共享通用测试依赖版本?
- php - 在 PHP 中拆分/分解字符串
- python - tf.data.Dataset.from_generator(output_shapes=...) 与 flow_from_directory(target_size=...)