Google Calendar는 사용자가 일정과 이벤트를 관리할 수 있는 Google Workspace의 제품입니다. 클라우드 기반 캘린더로 사용자가 이벤트를 생성, 편집 및 삭제할 수 있습니다. 또한 다른 사용자와 캘린더를 공유할 수 있습니다.

Overview

이 노트북은 Google Calendar Toolkit을 시작하는 데 도움을 줍니다. 이 toolkit은 Google Calendar API와 상호작용하여 캘린더에서 다양한 작업을 수행합니다. 다음과 같은 작업이 가능합니다:
  • 이벤트 생성
  • 이벤트 검색
  • 이벤트 업데이트
  • 다른 캘린더 간 이벤트 이동
  • 이벤트 삭제
  • 이벤트 목록 조회

Setup

이 toolkit을 사용하려면 다음이 필요합니다:
  1. Google Calendar에 액세스할 수 있는 Google 계정
  2. Google Calendar API 문서에 설명된 대로 자격 증명 설정. credentials.json 파일을 다운로드하면 Google Calendar API 사용을 시작할 수 있습니다.
개별 tool의 자동 추적을 활성화하려면 LangSmith API key를 설정하세요:
os.environ["LANGSMITH_TRACING"] = "true"
os.environ["LANGSMITH_API_KEY"] = getpass.getpass("Enter your LangSmith API key: ")

Installation

이 toolkit은 langchain-google repository의 langchain-google-community package에 있습니다. calendar extra가 필요합니다:
pip install -qU langchain-google-community\[calendar\]

Instantiation

기본적으로 toolkit은 로컬 credentials.json 파일을 읽습니다. Credentials 객체를 수동으로 제공할 수도 있습니다.
from langchain_google_community import CalendarToolkit

toolkit = CalendarToolkit()

Customizing Authentication

내부적으로 다음 메서드를 사용하여 googleapi resource가 생성됩니다. 더 많은 인증 제어를 위해 googleapi resource를 수동으로 빌드할 수 있습니다.
from langchain_google_community import CalendarToolkit
from langchain_google_community.calendar.utils import (
    build_resource_service,
    get_google_credentials,
)

# Can review scopes here: https://developers.google.com/calendar/api/auth
# For instance, readonly scope is https://www.googleapis.com/auth/calendar.readonly
credentials = get_google_credentials(
    token_file="token.json",
    scopes=["https://www.googleapis.com/auth/calendar"],
    client_secrets_file="credentials.json",
)

api_resource = build_resource_service(credentials=credentials)
toolkit = CalendarToolkit(api_resource=api_resource)

Tools

사용 가능한 tool 보기:
tools = toolkit.get_tools()
tools
[CalendarCreateEvent(api_resource=<googleapiclient.discovery.Resource object at 0x10ad13fb0>),
 CalendarSearchEvents(api_resource=<googleapiclient.discovery.Resource object at 0x10ad13fb0>),
 CalendarUpdateEvent(api_resource=<googleapiclient.discovery.Resource object at 0x10ad13fb0>),
 GetCalendarsInfo(api_resource=<googleapiclient.discovery.Resource object at 0x10ad13fb0>),
 CalendarMoveEvent(api_resource=<googleapiclient.discovery.Resource object at 0x10ad13fb0>),
 CalendarDeleteEvent(api_resource=<googleapiclient.discovery.Resource object at 0x10ad13fb0>),
 GetCurrentDatetime(api_resource=<googleapiclient.discovery.Resource object at 0x10ad13fb0>)]

Invocation

인자와 함께 직접 호출하기

dictionary 형식으로 필요한 인자를 전달하여 tool을 직접 호출할 수 있습니다. 다음은 CalendarCreateEvent tool을 사용하여 새 이벤트를 생성하는 예제입니다.
from langchain_google_community.calendar.create_event import CalendarCreateEvent

tool = CalendarCreateEvent()
tool.invoke(
    {
        "summary": "Calculus exam",
        "start_datetime": "2025-07-11 11:00:00",
        "end_datetime": "2025-07-11 13:00:00",
        "timezone": "America/Mexico_City",
        "location": "UAM Cuajimalpa",
        "description": "Event created from the LangChain toolkit",
        "reminders": [{"method": "popup", "minutes": 60}],
        "conference_data": True,
        "color_id": "5",
    }
)
'Event created: https://www.google.com/calendar/event?eid=amoxdjVsM2UzMW51Yjk2czc4ajhvaGdkcGcgam9yZ2VhbmczM0Bt'

Use within an agent

아래는 toolkit을 agent에 통합하는 방법을 보여줍니다. LLM 또는 chat model이 필요합니다:
# | output: false
# | echo: false

from langchain_openai import ChatOpenAI

llm = ChatOpenAI(model="gpt-4o-mini", temperature=0)
from langchain.agents import create_agent


agent_executor = create_agent(llm, tools)
example_query = "Create a green event for this afternoon to go for a 30-minute run."

events = agent_executor.stream(
    {"messages": [("user", example_query)]},
    stream_mode="values",
)
for event in events:
    event["messages"][-1].pretty_print()
================================ Human Message =================================

Create a green event for this afternoon to go for a 30-minute run.
================================== Ai Message ==================================
Tool Calls:
  get_current_datetime (call_drHRRhm6pdvcAuqagONUEKs5)
 Call ID: call_drHRRhm6pdvcAuqagONUEKs5
  Args:
================================= Tool Message =================================
Name: get_current_datetime

Time zone: America/Mexico_City, Date and time: 2025-04-02 19:07:30
================================== Ai Message ==================================
Tool Calls:
  create_calendar_event (call_p60zSVMmmjTy5Ctezzmlb9zD)
 Call ID: call_p60zSVMmmjTy5Ctezzmlb9zD
  Args:
    summary: Run
    start_datetime: 2025-04-02 19:30:00
    end_datetime: 2025-04-02 20:00:00
    timezone: America/Mexico_City
    color_id: 2
================================= Tool Message =================================
Name: create_calendar_event

Event created: https://www.google.com/calendar/event?eid=czZyZHVpcG43ajNiY241dmJmNWwycjE0NWsgam9yZ2VhbmczM0Bt
================================== Ai Message ==================================

I have created a green event for your run this afternoon. You can view it [here](https://www.google.com/calendar/event?eid=czZyZHVpcG43ajNiY241dmJmNWwycjE0NWsgam9yZ2VhbmczM0Bt). Enjoy your run!

API reference

  • Google Calendar API에 대한 자세한 내용은 Google Calendar API 개요를 참조하세요.
  • 모든 Google Calendar Toolkit 기능 및 구성에 대한 자세한 문서는 calendar 문서를 참조하세요.

Connect these docs programmatically to Claude, VSCode, and more via MCP for real-time answers.
I