В данной статье рассматривается ситуация, когда приложению необходимо получить доступ к одному или нескольким календарям, находящимся под управлением владельца приложения (то есть у приложения изначально есть права на использование и изменение информации в этих календарях).
Пример кода приведен на языке программирования Python.
В первую очередь в Google Cloud Platform Console нужно создать проект:
![](https://habrastorage.org/webt/kn/ar/1g/knar1gopms561cemgygfip8bw1c.png)
Далее рядом с логотипом google выбираем созданный проект:
![](https://habrastorage.org/webt/m6/vd/p2/m6vdp2dv3zhums3wbpaftgcd99u.png)
Поскольку работать приложение будет с google calendar, необходимо проекту подключить Google Calendar API. Переходим в Библиотеку:
![](https://habrastorage.org/webt/lh/o1/xc/lho1xc5tapfttq1yl6n7m2rqw-e.png)
Находим Google Calendar API и нажимаем Включить:
![](https://habrastorage.org/webt/ii/cu/mr/iicumrr4uzjlwu9khz3siysjz7k.png)
Для получения бессрочного доступа к google calendar необходимо создать сервисный аккаунт. Для этого переходим в Учетные данные, Создать учетные данные и выбираем Сервисный аккаунт:
![](https://habrastorage.org/webt/qh/b-/xm/qhb-xm0jqmekbsc7eeug2r2tesm.png)
Выбираем имя для аккаунта и нажимаем Создать:
![](https://habrastorage.org/webt/dc/8k/kw/dc8kkw25xipc1klc4dnlaelmmyw.png)
Затем пропускаем необязательные настройки и возвращаемся на вкладку Учетные данные.
Далее нужно перейти в сведения о сервисном аккаунте, нажав на имя аккаунта, и создать ключ:
![](https://habrastorage.org/webt/xk/gp/u-/xkgpu-2murxwpcdkg6_dj16twpm.png)
Необходимо выбрать формат файла ключа JSON и на ПК будет загружен файл, который в дальнейшем будет считываться программой для получения доступа к сервисному аккаунту.
После переходим в календарь, к которому необходимо предоставить доступ приложению, заходим в его настройки:
![](https://habrastorage.org/webt/45/4q/tw/454qtwjjsdvaeov3hiz_4pzyvcg.png)
Далее нажимаем Добавить пользователя, вставляем имя сервисного аккаунта и внимательно выбираем разрешения (в зависимости от функционала приложения):
![](https://habrastorage.org/webt/bk/xa/v5/bkxav5stk7riguevhuuc303dyys.png)
Теперь переходим к коду приложения.
Устанавливаем следующие библиотеки:
После запускаем следующий код:
В результате выполнения представленного выше кода с параметром '+' видим созданное событие в календаре:
![](https://habrastorage.org/webt/gk/h_/ev/gkh_evgpmu1ze3agdomtkacenig.png)
Ссылки на материалы:
Пример кода приведен на языке программирования Python.
В первую очередь в Google Cloud Platform Console нужно создать проект:
![](https://habrastorage.org/webt/kn/ar/1g/knar1gopms561cemgygfip8bw1c.png)
Далее рядом с логотипом google выбираем созданный проект:
![](https://habrastorage.org/webt/m6/vd/p2/m6vdp2dv3zhums3wbpaftgcd99u.png)
Поскольку работать приложение будет с google calendar, необходимо проекту подключить Google Calendar API. Переходим в Библиотеку:
![](https://habrastorage.org/webt/lh/o1/xc/lho1xc5tapfttq1yl6n7m2rqw-e.png)
Находим Google Calendar API и нажимаем Включить:
![](https://habrastorage.org/webt/ii/cu/mr/iicumrr4uzjlwu9khz3siysjz7k.png)
Для получения бессрочного доступа к google calendar необходимо создать сервисный аккаунт. Для этого переходим в Учетные данные, Создать учетные данные и выбираем Сервисный аккаунт:
![](https://habrastorage.org/webt/qh/b-/xm/qhb-xm0jqmekbsc7eeug2r2tesm.png)
Выбираем имя для аккаунта и нажимаем Создать:
![](https://habrastorage.org/webt/dc/8k/kw/dc8kkw25xipc1klc4dnlaelmmyw.png)
Затем пропускаем необязательные настройки и возвращаемся на вкладку Учетные данные.
Далее нужно перейти в сведения о сервисном аккаунте, нажав на имя аккаунта, и создать ключ:
![](https://habrastorage.org/webt/xk/gp/u-/xkgpu-2murxwpcdkg6_dj16twpm.png)
Необходимо выбрать формат файла ключа JSON и на ПК будет загружен файл, который в дальнейшем будет считываться программой для получения доступа к сервисному аккаунту.
После переходим в календарь, к которому необходимо предоставить доступ приложению, заходим в его настройки:
![](https://habrastorage.org/webt/45/4q/tw/454qtwjjsdvaeov3hiz_4pzyvcg.png)
Далее нажимаем Добавить пользователя, вставляем имя сервисного аккаунта и внимательно выбираем разрешения (в зависимости от функционала приложения):
![](https://habrastorage.org/webt/bk/xa/v5/bkxav5stk7riguevhuuc303dyys.png)
Теперь переходим к коду приложения.
Устанавливаем следующие библиотеки:
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://habrastorage.org/webt/gk/h_/ev/gkh_evgpmu1ze3agdomtkacenig.png)
Ссылки на материалы:
maxzhurkin
Похоже, астрологи объявили неделю пересказов манов на Хабре