如何在独立脚本中引用我的任务列表,该脚本将由其他用户使用

时间:2019-04-24 05:30:57

标签: google-apps-script google-tasks-api google-tasks

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

独立脚本中的代码为

function getTasks() {

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

}

绑定脚本中的代码为


function getTask(){

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

}

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

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

2 个答案:

答案 0 :(得分:1)

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

如果我的理解正确,那么这个答案如何?

OnEdit事件触发器作为电子表格的所有者运行。因此,当用户编辑电子表格时,脚本将使用您的任务列表ID运行。但是从您的问题来看,它是when I run it from a different user account I get the the tasklist of the other user.。我可以确认在我的环境中,当用户编辑共享的电子表格时,脚本以所有者(me)身份运行,并且可以使用我的任务列表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事件触发器通过用户编辑单元格来运行脚本时,该脚本将作为电子表格的所有者运行。但是,当通过单击工作表和自定义菜单上的按钮来运行脚本时,该脚本将以每个用户的身份运行。请注意这一点。

参考:

答案 1 :(得分:0)

以始终作为您运行的webapp的形式运行脚本。据我所知,任务不允许共享或让您操纵其他人的任务。