Как я могу создать новый проект с задачами в 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 ответа

Решение

Чтобы создать проект в асане, вам нужно получить рабочее пространство или идентификатор команды. Я создал один, используя рабочее пространство. Это шаги:

  1. Вы идете сюда после входа в асану. Это будет иметь идентификаторы рабочего пространства.
  2. Загрузите клиентскую библиотеку python-asana отсюда
  3. В питоне это код

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

Это создаст проект на вашем аккаунте. Это было в моем случае. Чтобы создать задачу, следуйте этой процедуре.

  1. Получить идентификатор проекта, который будет возвращен asana, когда вы создадите проект, или перейдите сюда, чтобы получить его.
  2. Запустите этот код тогда

    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'})
Другие вопросы по тегам