4

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

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

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

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

补充:这是我在 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 并获得一个新项目吗?

4

2 回答 2

5

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

创建项目需要工作空间或组织的上下文,如果是组织,还需要项目所属的团队的上下文。

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

import asana

client = asana.Client.basic_auth('ASANA_API_KEY')

workspaces = client.workspaces.find_all({"opt_fields": "is_organization, name"})

workspace = next(workspace for workspace in workspaces if workspace['name'] == 'Moon Landing')

project = {'name':'Training','workspace': workspace['id']}

if workspace['is_organization'] :
    teams = client.teams.find_by_organization(workspace['id'])
    team = next(team for team in teams if team['name'] == 'Astronauts')
    project['team'] = team['id']

training = client.projects.create(project)

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

task = client.tasks.create_in_workspace(workspace['id'], {'projects': [training['id']], 'name': 'Learn to fly space craft'})

然后,添加子任务

client.tasks.add_subtask(task['id'], {'name': 'Turning it on'})
于 2015-06-02T21:14:22.077 回答
2

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

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

    import asana
    client = asana.Client.basic_auth('ASANA_KEY')
    project = {'name':'test','workspace':'WORKSPACE_ID'}
    client.projects.create(project)
    

这将在您的帐户上创建项目。在我的情况下确实如此。要创建任务,请遵循此过程。

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

    a={'name':'abc','projects':'PROJECT_ID','workspace':'WORKSPACE_ID'}
    client.tasks.create(a)
    

这将在您提供其 ID 的项目下创建任务。

于 2015-06-02T17:06:00.587 回答