إعداد مزامنة تقويم google مع تطبيق ويب

تتناول هذه المقالة الموقف الذي يحتاج فيه أحد التطبيقات إلى الوصول إلى تقويم واحد أو أكثر يخضع لتحكم مالك التطبيق (أي أن التطبيق لديه في البداية حقوق استخدام المعلومات وتغييرها في هذه التقويمات).



كود العينة موجود في لغة برمجة بايثون.



بادئ ذي بدء ، تحتاج إلى إنشاء مشروع في Google Cloud Platform Console :





بعد ذلك ، بجانب شعار google ، حدد المشروع الذي تم إنشاؤه:





نظرًا لأن التطبيق سيعمل مع تقويم Google ، يحتاج المشروع إلى توصيل واجهة برمجة تطبيقات تقويم Google . اذهب إلى المكتبة :





ابحث عن واجهة برمجة تطبيقات تقويم Google وانقر على تمكين :





للحصول على وصول غير محدود إلى تقويم Google ، تحتاج إلى إنشاء حساب خدمة. للقيام بذلك ، انتقل إلى بيانات الاعتماد ، وأنشئ بيانات اعتماد وحدد حساب الخدمة :







اختر اسمًا للحساب وانقر فوق إنشاء :





ثم تخطى الإعدادات الاختيارية والعودة إلى بيانات اعتماد علامة التبويب .



بعد ذلك ، تحتاج إلى الانتقال إلى معلومات حساب الخدمة بالنقر فوق اسم الحساب وإنشاء مفتاح :





من الضروري تحديد تنسيق ملف مفتاح 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


نتيجة لتنفيذ الكود أعلاه باستخدام المعلمة "+" ، نرى الحدث الذي تم إنشاؤه في التقويم:





روابط للمواد:






All Articles