Скрипт: Отображение ссылки на руководителя в профиле Пачки
Язык: Python
Cложность: Cредняя
Автор: Иван Дьяконов, руководитель проекта
Если у ваших сотрудников в профиле отображается имя их руководителя, то теперь в нем появится и кликабельная ссылка на этого руководителя в Пачке! Можно будет сразу перейти в его профиль, а искать коллег станет гораздо проще и прозрачнее.
Данную интеграцию может сделать только администратор или владелец пространства в Пачке
Скрипт написан на языке Python. Его можно скопировать и воспроизвести в среде разработки, например, в PyCharm
1#Перед запуском программы нужно установить библиотеку requests
2# pip install requests
3
4import requests
5import json
6
7#URL для обращения к API Пачки, метод "Список сотрудников"
8url = "https://api.pachca.com/api/shared/v1/users"
9
10#access_token для доступа к API, доступен пользователям с ролями "Администратор"/"Владелец", раздел "Автоматизации" -> "API"
11headers = {"Authorization": "Bearer ВАШ_ACCESS_TOKEN"}
12headers_2 = {'Content-Type': 'application/json', "Authorization": "Bearer ВАШ_ACCESS_TOKEN"}
13
14#Получение списка сотрудников, добавленных в Пачку
15response = requests.get(url, headers=headers)
16data = json.loads(response.text)
17users_data_array = data['data']
18
19usersMap = {}
20usersMap_2 = {}
21
22#Cоздание ключей для поиска аккаунта руководителя
23# key - ключ для поиска руководителя по имени и департаменту (более точный)
24# key_2 - ключ для поиска руководителя по имени (менее точный)
25for user in users_data_array:
26 key = user['first_name'] + user['last_name'] + user['department']
27 key_2 = user['first_name'] + user['last_name']
28 usersMap[key] = user
29 usersMap_2[key_2] = user
30
31for user in users_data_array:
32 custom_properties = user['custom_properties']
33
34 #Поиск руководителя сотрудника по key или по key_2 (если не получилось найти руководителя с таким же департаментом, как у сотрудника)
35 for custom_property in custom_properties:
36
37 if custom_property['name'] == 'Ссылка на руководителя':
38 property_link = custom_property['id']
39
40 if custom_property['name'] == 'Руководитель' and custom_property['value']:
41 searchKey = custom_property['value'] + user['department']
42 director = usersMap.get(searchKey.replace(' ', ''))
43
44 if director is None:
45 searchKey_2 = custom_property['value']
46 director = usersMap_2.get(searchKey_2.replace(' ', ''))
47
48 #Генерация ссылки на профиль руководителя и добавление ее в профиль сотрудника
49 if bool(director):
50 body = {"user": {"custom_properties": [{"id": property_link, "value": "https://app.pachca.com?user_id=" + str(director['id'])}]}}
51 response = requests.put(url + '/' + str(user['id']), headers=headers_2, data=json.dumps(body))
52 break