파이썬 프로젝트 및 응용/음성으로 구글 캘린더에 자동으로 일정 등록하는 plugin 만들기

[프로젝트] 파이썬 음성으로 구글 캘린더에 자동으로 일정 등록하는 chatGPT plugin 만들기 - 2.샘플 스크립트 실행하기(token.json 파일 만들기)

파기차차 2023. 5. 25. 20:43
728x90
반응형
SMALL

ㅁ 개요

 

O 프로그램 소개

 

- 이번 글은 이전글([프로젝트] 파이썬 음성으로 구글 캘린더에 자동으로 일정 등록하는 chatGPT plugin 만들기 - 1.구글 클라우드 콘솔에서 구글 캘린더 API 사용 설정하기(credentials.json파일 만들기))에 이은 3번째 글로 실제 인증 및 권한 정보를 담고 있는 token.json파일을 만드는 과정을 설명합니다. (token.json파일에는 token, refresh_token 등의 정보를 담고 있음)

 

 

자세한 내용은 아래 구글 캘린더 API 퀵스타트 사이트를 참고하시기 바랍니다.

https://developers.google.com/calendar/api/quickstart/python?hl=ko

 

 

 

 


 

ㅁ 세부 내용

 

O 완성된 소스

 

 

소스 : sample.py

 

 

from __future__ import print_function
import datetime
import os.path
from googleapiclient.discovery import build
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials

# If modifying these scopes, delete the file token.json.
SCOPES = ['https://www.googleapis.com/auth/calendar']


def main():
    """Shows basic usage of the Google Calendar API.
    Prints the start and name of the next 10 events on the user's calendar.
    """
    creds = None
    # The file token.json stores the user's access and refresh tokens, and is
    # created automatically when the authorization flow completes for the first
    # time.
    if os.path.exists('token.json'):
        creds = Credentials.from_authorized_user_file('token.json', SCOPES)
    # If there are no (valid) credentials available, let the user log in.
    if not creds or not creds.valid:
        if creds and creds.expired and creds.refresh_token:
            creds.refresh(Request())
        else:
            flow = InstalledAppFlow.from_client_secrets_file(
                'credentials.json', SCOPES)
            creds = flow.run_local_server(port=0)
        # Save the credentials for the next run
        with open('token.json', 'w') as token:
            token.write(creds.to_json())

    service = build('calendar', 'v3', credentials=creds)

    # Call the Calendar API
    now = datetime.datetime.utcnow().isoformat() + 'Z' # 'Z' indicates UTC time
    print('Getting the upcoming 10 events')
    events_result = service.events().list(calendarId='primary', 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'])


if __name__ == '__main__':
    main()

 

 

 

 - 소스파일을 cmd, 파워쉘 또는 vscode 등에서 아래와 같이 실행하시기 바랍니다.
 

 

 > python sample.py

 

 

 


 
 

 

O 주요 내용

 

1. 아래와 구글 캘린더 API를 사용하기 위한 관련 모듈을 설치합니다.

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

 

 

 

2.샘플코드를 통해 인증/권한 정보를 담고 있는 token.json파일을 생성하기 위해서 아래 코드를 복사해 둡니다.

https://github.com/googleworkspace/python-samples/blob/master/calendar/quickstart/quickstart.py

 

 

3. 위에서 복사한 코드를 vscode 등을 열어서 붙여 넣고, 적당한 이름(저는 sample.py로 했습니다.)으로 저장합니다.

 

한가지 주의할 점은 우리는 구글 캘린더에 이정을 등록(쓰기)할 것이므로 쓰기 권한이 할당되어야 합니다.

따라서 아래 코드의 'SCOPES'에서 'readonly'를 제거해 줍니다.(아래와 같이 코딩)

 

 

 

 

4. 샘플코드를 저장 후 아래와 같이 파일(sample.py)이 생성되었습니다.

 

 

 

 

5. 파일을 실행하면 아래와 비슷하게 결과가 나오는데,

 

 

 

6. 아래와 같이 'Google 계정으로 로그인' 으로 브라우저 창이 뜹니다.

 

여기서 우리가 조금전 만든 프로젝트가 맞는지 확인 후

허용해준 구글 이메일 계정(저는 pygichacha@gmail.com)을 클릭합니다.

 

 

 

 

7. 아래와 같이 나타나면 '계속'을 클릭합니다.

 

 

 

 

 

8. 아래에서 '계속'을 클릭합니다.

 

 

 

 

 

 

9. 아래와 같은 메시지가 뜨면 정상적으로 실행한 것입니다.

 

 

 

 

10. 탐색기에서 확인해 보면 'token.json'파일이 생성된 것을 볼 수 있습니다.

 

 

 

 

11. 'token.json'을 열어 보면 토큰 및 리프레시 토큰 등의 인증 및 권한 정보등이 담겨져 있습니다.

 

 

 

 

여기까지 되셨으면, 우리는 다음 단계로 넘어갈 수 있는 준비가 되었습니다.

우리는 다음글에서 이 token.json 정보를 이용하여 구글 캘린더에 일정을 등록 및 삭제하는 방법을 알아볼 것입니다.

 

 

 

 

 

 


 

ㅁ 정리

 

O 우리가 배운 내용

 
 - 오늘은 이전글에서 만든 credentials.json파일을 이용하여 실제 인증 및 권한 정보를 담고 있는 token.json파일을 만드는 과정을 알아보았습니다.
 
 - 오늘 우리가 배운 내용을 간략히 정리해 보면 아래와 같습니다.
 > 1.퀵스타트의 샘플코드 복사 및 붙여넣은 후 아래 코드를 바꿔줘야 일정에 쓰기가 가능합니다.
수정 전

수정 후

SCOPES = ['https://www.googleapis.com/auth/calendar']

 

 

 

 

오늘은 여기까지이며, 댓글하트는 제가 이글을 지속할 수 있게 해주는 힘이 됩니다.

위의 내용이 유익하셨다면, 댓글과 하트 부탁드립니다.

 

 

 

 

감사합니다.

 

 

 

 

 

※ 추가적인 정보는 아래 유튜브 영상에서 해당 내용을 더욱 자세히 보실 수 있습니다.

 

 

728x90
반응형
LIST