Menyiapkan sinkronisasi kalender google dengan aplikasi web

Artikel ini membahas situasi saat aplikasi perlu mengakses satu atau lebih kalender yang berada di bawah kendali pemilik aplikasi (yaitu, aplikasi awalnya memiliki hak untuk menggunakan dan mengubah informasi di kalender ini).



Kode sampel ada dalam bahasa pemrograman Python.



Pertama-tama, Anda perlu membuat proyek di Google Cloud Platform Console :





Selanjutnya, di samping logo google, pilih proyek yang dibuat:





Karena aplikasi akan bekerja dengan kalender google, proyek perlu menghubungkan API Kalender Google . Pergi ke Perpustakaan :





Temukan API Google Kalender dan klik Aktifkan :





Untuk mendapatkan akses tak terbatas ke kalender google, Anda perlu membuat akun layanan. Untuk melakukan ini, buka kredensial , Buat kredensial, dan pilih akun layanan :







Pilih nama untuk akun dan klik Buat :





Kemudian lewati pengaturan opsional dan kembali ke kredensial tab .



Selanjutnya, Anda perlu membuka informasi tentang akun layanan dengan mengklik nama akun dan membuat kunci :





Anda harus memilih format file kunci JSON dan file tersebut akan diunduh ke PC, yang selanjutnya akan dibaca oleh program untuk mendapatkan akses ke akun layanan.



Setelah kami pergi ke kalender yang Anda perlukan untuk memberikan akses ke aplikasi, pergi ke pengaturannya:





Selanjutnya, klik Tambah Pengguna , masukkan nama akun layanan dan pilih izin dengan hati-hati (tergantung pada fungsionalitas aplikasi):





Sekarang mari beralih ke kode aplikasi.



Instal perpustakaan berikut:



pip install --upgrade google-api-python-client
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2


Kemudian kami menjalankan kode berikut:



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


Sebagai hasil dari mengeksekusi kode di atas dengan parameter '+', kita melihat acara yang dibuat di kalender:





Tautan ke materi:






All Articles