Пример кода приведен на языке программирования Python.
В первую очередь в Google Cloud Platform Console нужно создать проект:

Далее рядом с логотипом google выбираем созданный проект:

Поскольку работать приложение будет с google calendar, необходимо проекту подключить Google Calendar API. Переходим в Библиотеку:

Находим Google Calendar API и нажимаем Включить:

Для получения бессрочного доступа к google calendar необходимо создать сервисный аккаунт. Для этого переходим в Учетные данные, Создать учетные данные и выбираем Сервисный аккаунт:

Выбираем имя для аккаунта и нажимаем Создать:

Затем пропускаем необязательные настройки и возвращаемся на вкладку Учетные данные.
Далее нужно перейти в сведения о сервисном аккаунте, нажав на имя аккаунта, и создать ключ:

Необходимо выбрать формат файла ключа JSON и на ПК будет загружен файл, который в дальнейшем будет считываться программой для получения доступа к сервисному аккаунту.
После переходим в календарь, к которому необходимо предоставить доступ приложению, заходим в его настройки:

Далее нажимаем Добавить пользователя, вставляем имя сервисного аккаунта и внимательно выбираем разрешения (в зависимости от функционала приложения):

Теперь переходим к коду приложения.
Устанавливаем следующие библиотеки:
pip install --upgrade google-api-python-client pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2
После запускаем следующий код:
from __future__ import print_function import datetime import googleapiclient from google.oauth2 import service_account from googleapiclient.discovery import build SCOPES = ['https://www.googleapis.com/auth/calendar'] calendarId = 'lp285psodk309lilp73d9irek8@group.calendar.google.com' SERVICE_ACCOUNT_FILE = 'light-reality-285313-acdf4768fc46.json' class GoogleCalendar(object): def __init__(self): credentials = service_account.Credentials.from_service_account_file(SERVICE_ACCOUNT_FILE, scopes=SCOPES) self.service = googleapiclient.discovery.build('calendar', 'v3', credentials=credentials) # создание словаря с информацией о событии def create_event_dict(self): event = { 'summary': 'test event', 'description': 'some info', 'start': { 'dateTime': '2020-08-03T03:00:00+03:00', }, 'end': { 'dateTime': '2020-08-03T05:30:00+03:00', } } return event # создание события в календаре def create_event(self, event): e = self.service.events().insert(calendarId=calendarId, body=event).execute() print('Event created: %s' % (e.get('id'))) # вывод списка из десяти предстоящих событий def get_events_list(self): now = datetime.datetime.utcnow().isoformat() + 'Z' print('Getting the upcoming 10 events') events_result = self.service.events().list(calendarId=calendarId, timeMin=now, maxResults=10, singleEvents=True, orderBy='startTime').execute() events = events_result.get('items', []) if not events: print('No upcoming events found.') for event in events: start = event['start'].get('dateTime', event['start'].get('date')) print(start, event['summary']) calendar = GoogleCalendar() print("+ - create event\n? - print event list\n") c = input() if c == '+': event = calendar.create_event_dict() calendar.create_event(event) elif c == '?': calendar.get_events_list() else: pass
В результате выполнения представленного выше кода с параметром ‘+’ видим созданное событие в календаре:

Ссылки на материалы:
ссылка на оригинал статьи https://habr.com/ru/post/525680/
Добавить комментарий