如何使用Python在Asana中创建包含任务的新项目?

时间:2015-06-02 16:21:36

标签: python asana asana-connect

我看到一些有关如何使用API​​创建任务的问题,但我想知道如何创建新项目。

每次我想创建一个新项目时,我都有预定的格式来创建一个新项目。我有特定的任务,每个任务都有自己的子任务。现在我在Asana上有一个模板,每次我想创建一个新项目时,我都会去那个项目并复制它并将其重命名为我当前的项目。

有没有人知道使用Python自动执行此操作的方法,这样我就可以运行脚本并输入项目名称的详细信息,它将自动在Asana上创建一个新项目(如果需要,这样就可以了一次制作5个项目我可以只列出所有项目名称并循环遍历所有项目吗?

我知道你需要一个密钥,我有一些名为API_KEY的东西,长度为32个字符。

ADD ON:以下是我在Python中用来访问Asana工作空间中所有任务和子任务的代码:

import asana
api_key = '################################' //my private key goes here
client = asana.Client.basic_auth(api_key)
me = client.users.me()
all_projects = next(workspace for workspace in me['workspaces'])
projects = client.projects.find_by_workspace(all_projects['id'], iterator_type=None)

for project in projects:
    if 'Template' not in project['name']:
        continue
    print(project['name'])
    project_id = project['id']
    tasks = client.tasks.find_by_project(project_id, iterator_type=None)

    for task in tasks:
        print("    " + task['name'])
        task_id = task['id']
        task_subtasks = client.tasks.subtasks(task_id, full_payload=True)

        for subtask in task_subtasks:
            print("        " + subtask['name'])

当我运行这个时,我得到了他们的标题中包含“模板”一词的项目的所有任务和子任务。那么,这是如何阅读,如果我以JSON格式保存所有这些,那么每次我想创建一个新项目时我都可以上传那个JSON并获得一个新项目吗?

2 个答案:

答案 0 :(得分:5)

看起来您正在使用python-asana客户端库。这个库提供了一个很好的包装器,可以实现访问Asana API的最佳实践。我鼓励您阅读文档以充分理解它的设计和功能。

Creating a project需要工作空间或组织的上下文,并且在组织的情况下还需要项目团队的上下文属于。

以下代码使用相同的库在“Moon Landing”工作区中创建项目,如果工作区是将项目放入“Astronauts”团队的组织。

Echo

创建“培训”项目后,您可以像这样向该项目添加任务。

WScript.exe

然后,添加子任务

var angularApp = angular.module('app', [dep1,dep2]);

答案 1 :(得分:1)

要在体式中创建项目,您需要获得工作区,或者需要获得团队ID。我用工作区创建了一个。这些是步骤: -

  1. 登录体式后你去了here。这将有工作区ID。
  2. here
  3. 下载python-asana客户端库
  4. 在python中这是代码

    import asana
    client = asana.Client.basic_auth('ASANA_KEY')
    project = {'name':'test','workspace':'WORKSPACE_ID'}
    client.projects.create(project)
    
  5. 这将在您的帐户中创建项目。它确实在我的情况下。要创建任务,请遵循以下步骤。

    1. 获取项目ID,当您创建项目或here获取项目时,该项目ID将由asana返回。
    2. 然后运行此代码

      a={'name':'abc','projects':'PROJECT_ID','workspace':'WORKSPACE_ID'}
      client.tasks.create(a)
      
    3. 这将在您提供其ID的项目下创建任务。