如何在将由其他用户使用的独立脚本中引用我的任务列表
How to refer to my tasklist in a standalone script that will be used by other user
我有一个链接到独立脚本的电子表格,该脚本从我的任务列表中导入任务。当我是用户时它工作正常但在共享用户帐户中不起作用。
独立脚本中的代码是
function getTasks() {
var tasklistID="mytasklistid";
var tasks=Tasks.Tasks.list(tasklistID);
return tasks
}
绑定脚本中的代码是
function getTask(){
var tasks = TaskManagerScript.getTasks()
Browser.msgBox(tasks)
}
当我 运行 我帐户中的代码时,我按预期从具有指定 ID 的任务列表中获取任务。但是当我从不同的用户帐户 运行 它时,我得到了另一个用户的任务列表。
当其他用户 运行 时,如何使代码 return 成为具有指定 ID 的列表中的任务。
运行 你的脚本作为网络应用程序,总是 运行 和你一样。据我所知,任务不允许共享或让您操纵其他人的任务。
- 您正在使用 Spreadsheet 的容器绑定脚本,并且绑定的脚本会安装一个库。
- Spreadsheet 已被用户分享。您是 Spreadsheet.
的所有者
- 您想让用户使用您的任务 ID。
- 您想 运行 脚本由 OnEdit 事件触发。
如果我的理解是正确的,这个答案怎么样?
OnEdit 事件触发器是 运行 作为 Spreadsheet 的所有者。所以当用户编辑 Spreadsheet 时,脚本是 运行 和你的任务列表 ID。但是从你的问题来看,是when I run it from a different user account I get the the tasklist of the other user.
。我可以确认在我的环境中,当用户编辑到共享 Spreadsheet 时,脚本是 运行 作为所有者(我),并且可以使用我的任务列表 ID。不幸的是,我无法复制你的情况。那么,为了确认这种情况,可以测试一下下面的流程吗?
测试示例流程:
- 创建新的传播sheet.
- 打开脚本编辑器并安装
TaskManagerScript
的库。
- 在高级 Google 服务中启用任务 API。
将脚本放入脚本编辑器。脚本如下
function getTask(e) {
var tasks = TaskManagerScript.getTasks();
e.source.appendRow([JSON.stringify(tasks)]);
}
将 OnEdit 触发器安装到 getTasks()
。
- 要授权,请运行
getTasks()
脚本编辑器授权范围。
- 在这种情况下,会发生错误。不过别担心。此操作仅用于授权。
- 可能不需要此授权。但这是以防万一。
- 将点差sheet 分享给不是您帐户的用户。
- 用户编辑sheet。
通过上述流程,当用户编辑 sheet 时,将返回使用您的任务列表 ID 检索到的结果。
注:
- 当 OnEdit 事件通过用户编辑单元格触发 运行 脚本时,脚本 运行 作为 Spreadsheet 的所有者。但是当脚本是 运行 通过单击 sheet 和自定义菜单上的按钮时,脚本是 运行 作为每个用户。请注意这一点。
参考:
我有一个链接到独立脚本的电子表格,该脚本从我的任务列表中导入任务。当我是用户时它工作正常但在共享用户帐户中不起作用。
独立脚本中的代码是
function getTasks() {
var tasklistID="mytasklistid";
var tasks=Tasks.Tasks.list(tasklistID);
return tasks
}
绑定脚本中的代码是
function getTask(){
var tasks = TaskManagerScript.getTasks()
Browser.msgBox(tasks)
}
当我 运行 我帐户中的代码时,我按预期从具有指定 ID 的任务列表中获取任务。但是当我从不同的用户帐户 运行 它时,我得到了另一个用户的任务列表。
当其他用户 运行 时,如何使代码 return 成为具有指定 ID 的列表中的任务。
运行 你的脚本作为网络应用程序,总是 运行 和你一样。据我所知,任务不允许共享或让您操纵其他人的任务。
- 您正在使用 Spreadsheet 的容器绑定脚本,并且绑定的脚本会安装一个库。
- Spreadsheet 已被用户分享。您是 Spreadsheet. 的所有者
- 您想让用户使用您的任务 ID。
- 您想 运行 脚本由 OnEdit 事件触发。
如果我的理解是正确的,这个答案怎么样?
OnEdit 事件触发器是 运行 作为 Spreadsheet 的所有者。所以当用户编辑 Spreadsheet 时,脚本是 运行 和你的任务列表 ID。但是从你的问题来看,是when I run it from a different user account I get the the tasklist of the other user.
。我可以确认在我的环境中,当用户编辑到共享 Spreadsheet 时,脚本是 运行 作为所有者(我),并且可以使用我的任务列表 ID。不幸的是,我无法复制你的情况。那么,为了确认这种情况,可以测试一下下面的流程吗?
测试示例流程:
- 创建新的传播sheet.
- 打开脚本编辑器并安装
TaskManagerScript
的库。 - 在高级 Google 服务中启用任务 API。
将脚本放入脚本编辑器。脚本如下
function getTask(e) { var tasks = TaskManagerScript.getTasks(); e.source.appendRow([JSON.stringify(tasks)]); }
将 OnEdit 触发器安装到
getTasks()
。- 要授权,请运行
getTasks()
脚本编辑器授权范围。- 在这种情况下,会发生错误。不过别担心。此操作仅用于授权。
- 可能不需要此授权。但这是以防万一。
- 将点差sheet 分享给不是您帐户的用户。
- 用户编辑sheet。
通过上述流程,当用户编辑 sheet 时,将返回使用您的任务列表 ID 检索到的结果。
注:
- 当 OnEdit 事件通过用户编辑单元格触发 运行 脚本时,脚本 运行 作为 Spreadsheet 的所有者。但是当脚本是 运行 通过单击 sheet 和自定义菜单上的按钮时,脚本是 运行 作为每个用户。请注意这一点。