如何使用 Python 在 Asana 中创建包含任务的新项目?
How can I create a new project with tasks in Asana using Python?
我看到一些关于如何使用 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'])
当我 运行 执行此操作时,我将获得标题中包含 'template' 一词的项目的所有任务和子任务。所以,这就是阅读方式,如果我将所有这些都保存为 JSON 格式,那么每次我想创建一个新项目时,我都可以上传那个 JSON 并获得一个新的项目?
要在 asana 中创建项目,您需要获取工作空间或获取团队 ID。我使用工作区创建了一个。这些是步骤:-
- 您在登录 asana 后进入 here。这将具有工作区 ID。
- 从 here
下载 python-asana 客户端库
在python中这是代码
import asana
client = asana.Client.basic_auth('ASANA_KEY')
project = {'name':'test','workspace':'WORKSPACE_ID'}
client.projects.create(project)
这将在您的帐户上创建项目。在我的情况下确实如此。要创建任务,请遵循此过程。
- 获取项目 ID,当您创建项目或去 here 获取项目时,asana 将返回该 ID。
运行这段代码然后
a={'name':'abc','projects':'PROJECT_ID','workspace':'WORKSPACE_ID'}
client.tasks.create(a)
这将在您提供其 ID 的项目下创建任务。
您似乎在使用 python-asana client library. This library provide a nice wrapper that implements best practices for accessing the Asana API。我鼓励您阅读文档以充分理解它的设计和功能。
Creating a project 需要工作区或组织的上下文,如果是组织,还需要项目所属团队的上下文。
以下代码使用相同的库在 "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)
创建 "Training" 项目后,您可以像这样向该项目添加任务。
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'})
我看到一些关于如何使用 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'])
当我 运行 执行此操作时,我将获得标题中包含 'template' 一词的项目的所有任务和子任务。所以,这就是阅读方式,如果我将所有这些都保存为 JSON 格式,那么每次我想创建一个新项目时,我都可以上传那个 JSON 并获得一个新的项目?
要在 asana 中创建项目,您需要获取工作空间或获取团队 ID。我使用工作区创建了一个。这些是步骤:-
- 您在登录 asana 后进入 here。这将具有工作区 ID。
- 从 here 下载 python-asana 客户端库
在python中这是代码
import asana client = asana.Client.basic_auth('ASANA_KEY') project = {'name':'test','workspace':'WORKSPACE_ID'} client.projects.create(project)
这将在您的帐户上创建项目。在我的情况下确实如此。要创建任务,请遵循此过程。
- 获取项目 ID,当您创建项目或去 here 获取项目时,asana 将返回该 ID。
运行这段代码然后
a={'name':'abc','projects':'PROJECT_ID','workspace':'WORKSPACE_ID'} client.tasks.create(a)
这将在您提供其 ID 的项目下创建任务。
您似乎在使用 python-asana client library. This library provide a nice wrapper that implements best practices for accessing the Asana API。我鼓励您阅读文档以充分理解它的设计和功能。
Creating a project 需要工作区或组织的上下文,如果是组织,还需要项目所属团队的上下文。
以下代码使用相同的库在 "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)
创建 "Training" 项目后,您可以像这样向该项目添加任务。
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'})