首页 > 解决方案 > 如何在其他用户将使用的独立脚本中引用我的任务列表

问题描述

我有一个电子表格链接到从我的任务列表中导入任务的独立脚本。当我是用户时它工作正常,但在共享用户帐户中不起作用。

独立脚本中的代码是

function getTasks() {

  var tasklistID="mytasklistid";  
  var tasks=Tasks.Tasks.list(tasklistID);
  return tasks

}

绑定脚本中的代码是


function getTask(){

var tasks = TaskManagerScript.getTasks()
Browser.msgBox(tasks)

}

当我在我的帐户中运行代码时,我会按预期从具有指定 ID 的任务列表中获取任务。但是当我从另一个用户帐户运行它时,我会得到另一个用户的任务列表。

当其他用户运行代码时,如何使代码从具有指定 ID 的列表中返回任务。

标签: google-apps-scriptgoogle-tasks-apigoogle-tasks

解决方案


  • 您正在使用电子表格的容器绑定脚本,并且绑定脚本安装了一个库。
  • 电子表格由用户共享。您是电子表格的所有者。
  • 您想让用户使用您的任务 ID。
  • 您希望通过 OnEdit 事件触发器运行脚本。

如果我的理解是正确的,这个答案怎么样?

OnEdit 事件触发器作为电子表格的所有者运行。因此,当用户编辑电子表格时,脚本会使用您的任务列表 ID 运行。但从你的问题来看,它是when I run it from a different user account I get the the tasklist of the other user.. 我可以确认在我的环境中,当用户编辑共享电子表格时,脚本以所有者(我)身份运行,并且可以使用我的任务列表 ID。不幸的是,我无法复制您的情况。那么,为了确认这种情况,可以测试下面的流程吗?

测试示例流程:

  1. 创建新的电子表格。
  2. 打开脚本编辑器并安装TaskManagerScript.
  3. 在高级 Google 服务中启用 Tasks API。
  4. 将脚本放入脚本编辑器。脚本如下。

    function getTask(e) {
      var tasks = TaskManagerScript.getTasks();
      e.source.appendRow([JSON.stringify(tasks)]);
    }
    
  5. 将 OnEdit 触发器安装到getTasks().

  6. 为了授权,请getTasks()通过脚本编辑器运行并授权范围。
    • 在这种情况下,会发生错误。但别担心。此操作仅用于授权。
    • 可能不需要此授权。但这只是以防万一。
  7. 将电子表格共享给不是您帐户的用户。
  8. 用户编辑工作表。

通过上述流程,当用户编辑工作表时,将返回使用您的任务列表 ID 检索到的结果。

笔记:

  • 当 OnEdit 事件触发器通过用户编辑单元格来运行脚本时,脚本将作为电子表格的所有者运行。但是,当通过单击工作表上的按钮和自定义菜单来运行脚本时,脚本将作为每个用户运行。请注意这一点。

参考:


推荐阅读