Как я могу создать новый проект с задачами в Asana, используя 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'])
Когда я запускаю это, я получаю все свои задачи и подзадачи для проектов, в названиях которых есть слово "шаблон". Итак, это как читать, есть ли что, если я сохраню все это в формате JSON, то каждый раз, когда я хочу создать новый проект, я могу просто загрузить этот JSON и получить новый проект?
2 ответа
Чтобы создать проект в асане, вам нужно получить рабочее пространство или идентификатор команды. Я создал один, используя рабочее пространство. Это шаги:
- Вы идете сюда после входа в асану. Это будет иметь идентификаторы рабочего пространства.
- Загрузите клиентскую библиотеку python-asana отсюда
В питоне это код
import asana client = asana.Client.basic_auth('ASANA_KEY') project = {'name':'test','workspace':'WORKSPACE_ID'} client.projects.create(project)
Это создаст проект на вашем аккаунте. Это было в моем случае. Чтобы создать задачу, следуйте этой процедуре.
- Получить идентификатор проекта, который будет возвращен asana, когда вы создадите проект, или перейдите сюда, чтобы получить его.
Запустите этот код тогда
a={'name':'abc','projects':'PROJECT_ID','workspace':'WORKSPACE_ID'} client.tasks.create(a)
Это создаст задачу для проекта, чей идентификатор вы предоставляете.
Похоже, вы используете клиентскую библиотеку python-asana. Эта библиотека предоставляет хорошую оболочку, которая реализует лучшие практики для доступа к Asana API. Я бы посоветовал вам прочитать документацию, чтобы полностью понять ее дизайн и возможности.
Создание проекта требует контекста рабочей области или организации, а в случае организации дополнительно требует контекст команды, к которой принадлежит проект.
Следующий код использует ту же библиотеку для создания проекта в рабочем пространстве "Посадка на Луну", если рабочее пространство является организацией, он помещает проект в команду "Астронавты".
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'})