{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["platform-badges","admonition","img"]},"type":"markdown"},"seo":{"title":"Treasure AI Studio - Connect Google Calendar","description":"Connect Google Calendar to Treasure AI Studio so agents can read your calendars, find open time across people, and create or update events for you.","siteUrl":"https://docs.treasure.ai","lang":"en-US","jsonLd":{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://www.treasure.ai/","name":"Treasure AI","url":"https://www.treasure.ai/","logo":"https://www.treasure.ai/hubfs/assets/images/logos/primary-logo.svg"},{"@type":"WebSite","@id":"https://docs.treasure.ai/#website","name":"Treasure AI Documentation","url":"https://docs.treasure.ai/","inLanguage":["en","ja"],"publisher":{"@id":"https://www.treasure.ai/"}}]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"connect-google-calendar","__idx":0},"children":["Connect Google Calendar"]},{"$$mdtype":"Tag","name":"PlatformBadges","attributes":{"platforms":["Web","Desktop"]},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The Google Calendar connector lets Treasure AI Studio agents work with your schedule during a chat. An agent can read the calendars your Google account can see, search months of events for the one you half-remember, compare several people's busy time to find a slot that works, and then create or adjust the event itself. Use it when scheduling is the last step of something the agent already did — booking the review after it finished the analysis, or putting the campaign milestones on a calendar — so the work and the calendar entry don't live in two windows."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This connection can ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["write"]},", within a narrow surface: the agent creates events and updates existing ones. It cannot delete an event, create or delete a calendar, or change who a calendar is shared with. A created or updated event can carry guests, and Google invites them — see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#guests-and-notifications"},"children":["Guests and Notifications"]},"."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"New to connections?"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Read ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/ai-studio/connections"},"children":["Connections"]}," first for the general model — the difference between a connector and a connection, and the administrator vs. user roles. This page covers the Google Calendar-specific steps."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"objective","__idx":1},"children":["Objective"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Enable the Google Calendar connector for your account and authorize a connection, so the agent can read your calendars, find open time, and create or update events during a chat."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"prerequisites","__idx":2},"children":["Prerequisites"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Account administrator privileges in Treasure AI Studio — needed for Step 1 only (enabling the connector)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["A Google account with the calendars you want the agent to work with. The agent reads and writes as this account, so its reach follows that account's own calendar access — see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#what-the-agent-can-see"},"children":["What the Agent Can See"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Any calendar you want the agent to read must already be in that account's calendar list. The agent cannot subscribe to a calendar or add one to the list"]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"who-does-what","__idx":3},"children":["Who Does What"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Setting up Google Calendar touches two roles, each doing its part once. There is nothing to configure on the Google Cloud side — Treasure AI manages the OAuth application."]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"width":"30%","data-label":"Role"},"children":["Role "]},{"$$mdtype":"Tag","name":"th","attributes":{"width":"44%","data-label":"What They Do"},"children":["What They Do "]},{"$$mdtype":"Tag","name":"th","attributes":{"width":"26%","data-label":"How Often"},"children":["How Often "]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Treasure AI Studio administrator"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Adds the Google Calendar connector in ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Connector Settings"]}," and saves it. There are no fields to fill in."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Once for the organization"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Each member"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Authorizes their own connection from ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Connections"]},", choosing which Google account to use and approving the requested access."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Once per person"]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["There is no OAuth application to register, no service account to create and share a calendar with, and no network policy rule to add. Each member's own Google account is the authorization."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"step-1--enable-the-google-calendar-connector-administrator","__idx":4},"children":["Step 1 — Enable the Google Calendar Connector (Administrator)"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Treasure AI manages the Google OAuth application for this connector, so there is nothing to create in the Google Cloud console and no client ID or secret to enter. The configuration form is empty."]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["In Treasure AI Studio, open ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Settings → Connector Settings"]}," (under ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Organization"]},")."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Click ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Add Connector"]}," (or ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Add your first connector"]},") and choose ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Google Calendar"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Click ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Save"]},". There are no fields to fill in. The connector is saved already enabled, so Google Calendar appears under ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Available"]}," on every user's ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Connections"]}," tab straight away."]}]},{"$$mdtype":"Tag","name":"Image","attributes":{"src":"/assets/ai-studio-connector-configure-google-calendar.8a0fe94a4c644014ed4206610be82d89d6371fb769e2810c945f214faec0e7e3.fdfbfafb.webp","alt":"The Configure Google Calendar form in Connector Settings, with no input fields at all — only Save and Cancel buttons below the heading","framed":false,"withLightbox":true,"width":"700px"},"children":[]},{"$$mdtype":"Tag","name":"Image","attributes":{"src":"/assets/ai-studio-connector-google-calendar-configured.8e6c4d52695758e34aebea21415fc417fb3152d672ede33aac644e1e4b13c7e2.fdfbfafb.webp","alt":"The saved Google Calendar row in Connector Settings, showing its description, an expand chevron, an enable toggle, and a delete icon, with no network policy reminders","framed":false,"withLightbox":true,"width":"800px"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["That is the whole administrator setup. The saved row carries an enable toggle, and turning it off does more than stop new authorizations: it withdraws Google Calendar from the agent's permitted actions at once, in chats that are already running as well as new ones. A chat in flight is not interrupted, but the next operation the agent attempts is refused, so every existing connection stops working until you turn it back on. Members keep their connections while it is off."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning","name":"Enabling the connector lets the agent put events on other people's calendars"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["There is no read-only mode. Every member who connects gives the agent the ability to create and update events as them, and an event the agent creates can name guests — who then see it on their own calendar and, depending on the notification setting, receive an invitation email from Google. The guests can be anyone the member could invite themselves, inside or outside the organization."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The agent cannot delete an event, create or delete a calendar, or change a calendar's sharing. Decide that event creation on the member's behalf is acceptable before you enable it, and tell members that the agent's invitations arrive under their name."]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"No network policy change is needed"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The Google Calendar connector lists ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["no egress domains"]},", and Connector Settings shows no \"allow this domain\" reminder for it. That is deliberate: the agent's sandbox never calls the Calendar API. The request is made by Treasure AI's connector service outside the sandbox, so your ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/ai-studio/security/network-policy"},"children":["network policy"]}," — which governs sandbox egress — does not apply to it and does not need a new rule."]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"step-2--authorize-your-connection-user","__idx":5},"children":["Step 2 — Authorize Your Connection (User)"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Each member who wants the agent to work with their calendar authorizes their own connection. You can do this ahead of time from ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Settings"]},", or on demand from a chat."]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Open ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Settings → Connections"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Under ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Available"]},", find ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Google Calendar"]}," and click ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Connect"]},"."]}]},{"$$mdtype":"Tag","name":"Image","attributes":{"src":"/assets/ai-studio-connections-google-available.961f60ca9f0438f15ef1d0a25d2b063119fcd44264cb7def42d2740de928964e.fdfbfafb.webp","alt":"The Connections page with Treasure AI Voice, Google Analytics, Google Calendar, Google Search Console, and Treasure Data all listed under Available, each with a Connect button","framed":false,"withLightbox":true,"width":"800px"},"children":[]},{"$$mdtype":"Tag","name":"ol","attributes":{"start":3},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["In the Google popup, choose the Google account whose calendars you want the agent to work with. If you are signed in to more than one, pick deliberately — the connection carries whichever account you choose here."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Review the requested access and approve it. Google asks for two permissions: viewing your calendars, and managing events on them."]}]},{"$$mdtype":"Tag","name":"Image","attributes":{"src":"/assets/ai-studio-connections-google-calendar-consent.0696d3658cb5537867db1204620c16b83ca357e37769694f58ca304a526ecd38.fdfbfafb.webp","alt":"The Google permission screen listing two items, 'View and edit events on all your calendars' and 'See and download any calendar you can access using your Google Calendar', with Cancel and Allow buttons","framed":false,"withLightbox":true,"width":"600px"},"children":[]},{"$$mdtype":"Tag","name":"ol","attributes":{"start":5},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["When the popup closes, ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Google Calendar"]}," appears in your connected list with the date you connected it."]}]},{"$$mdtype":"Tag","name":"Image","attributes":{"src":"/assets/ai-studio-connections-google-calendar-connected.4099897d575cc36dbd27be2848212bc094e73d95245f7f8ab0c1c94529fb17cc.fdfbfafb.webp","alt":"The Connections page with Google Calendar in the connected list, showing the date it was connected and a delete icon","framed":false,"withLightbox":true,"width":"800px"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A connection authorizes one Google account, and through it every calendar in that account's calendar list. Studio holds one Google Calendar connection per member at a time, so to switch to a different Google account you delete the connection and authorize again."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To remove the connection later, click the delete (trash) icon next to it. The agent immediately loses access. Events it already created or changed stay exactly as they are — including invitations guests have already accepted — because they are ordinary events owned by your account. Google still lists Treasure AI Studio under your account's ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://myaccount.google.com/connections"},"children":["third-party access"]}," until you remove it there as well."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"Connect from a chat instead"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You don't have to authorize in advance. If you ask the agent about your schedule before you've connected, it shows a ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Connection Required"]}," card in the chat — click ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Connect"]}," there to run the same authorization without leaving the conversation. The card names the connector by its internal id, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["googlecalendar"]},". See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/ai-studio/connections#connect-from-a-chat"},"children":["Connect from a chat"]},"."]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"step-3--use-google-calendar-in-a-chat","__idx":6},"children":["Step 3 — Use Google Calendar in a Chat"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Once Google Calendar is connected, ask the agent in plain language — no commands and no configuration in the chat. For example:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["\"What's on my calendar tomorrow? Group it by which project each meeting belongs to.\""]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["\"Find a 45-minute slot next week where I, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["taro@example.com"]},", and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["hanako@example.com"]}," are all free, in Asia/Tokyo.\""]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["\"Find the event where we reviewed the Q3 segment counts — I think it was in August.\""]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["\"Book the analysis review for Thursday at 2pm with the marketing ops team, and put the query results in the description.\""]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["\"Move my 3pm to 4pm and let the guests know.\""]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["\"Which of my recurring 1:1s did I actually hold last month?\""]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The agent chooses its own operations. For scheduling it typically checks busy time across the people you named, proposes a slot, and creates the event once you agree. Give it the time zone when it matters — Google stores an event's time with an IANA time zone such as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Asia/Tokyo"]},", and an all-day event as a plain date instead."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning","name":"Confirm the guest list and the time before the agent creates an event"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["An event the agent creates is indistinguishable from one you created: it lands on every guest's calendar, and Google may email them an invitation immediately. Ask the agent to show you the title, time, time zone, and the exact guest list before it writes, especially when guests are outside your organization. The agent cannot delete the event afterwards — it can only update it — so a wrong invitation has to be cleaned up in Google Calendar by you."]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"guests-and-notifications","__idx":7},"children":["Guests and Notifications"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["An event the agent creates or updates can carry guests, and Google treats them exactly as it treats guests you added yourself. Two things follow."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Guests always see the event."]}," Adding someone as a guest puts the event on their calendar. The notification setting only controls whether Google also sends them an invitation email — it does not control whether they get the event. The agent can request that all guests be notified, that only guests outside your organization be notified, or that nobody be notified; if it does not ask for a particular behavior, Google applies its own default."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Changing the guest list means sending the whole list."]}," Google stores an event's guests as one list, so an update replaces it rather than adding to it. When you ask the agent to add one person to an existing meeting, it has to read the event's current guests and send them back along with the new one. Say \"add X, keep everyone else\" rather than \"invite X\" when the meeting already has guests, and check the result — the agent has the operations it needs to get this right, but the instruction removes the ambiguity."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Every other field behaves the other way round: an update only changes what the agent actually specifies. Asking it to shift a meeting by an hour does not clear the description, the recurrence, or the conference link."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"what-the-agent-can-do","__idx":8},"children":["What the Agent Can Do"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["These are the operations the agent can use. It picks them itself from what you ask for — there is no command syntax for running one directly, though naming an operation in your message does steer the agent toward it."]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"width":"18%","data-label":"Area"},"children":["Area "]},{"$$mdtype":"Tag","name":"th","attributes":{"width":"40%","data-label":"Operations"},"children":["Operations "]},{"$$mdtype":"Tag","name":"th","attributes":{"width":"42%","data-label":"What They Do"},"children":["What They Do "]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Calendars"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["googlecalendar.list_calendars"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["List the calendars in the connected account's calendar list, with that account's access role for each. Up to 250 per request, paged."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Reading events"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["googlecalendar.list_events"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["googlecalendar.list_events_all_calendars"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["googlecalendar.get_event"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["googlecalendar.list_event_instances"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["List events on one calendar or across several at once (the multi-calendar form aggregates the results and reports per-calendar errors), read one event in full, and expand the instances of a recurring event. Filters include a time window, a full-text query, event types, and whether to expand recurrences. Up to 2,500 events per request, paged."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Searching events"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["googlecalendar.find_event"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Search a calendar's events by a full-text query string, optionally bounded by a time window and sorted. Up to 2,500 results, paged."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Open time"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["googlecalendar.free_busy_query"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["googlecalendar.find_free_slots"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Read busy intervals for a set of calendars or groups over a time window, or have the connector derive the free slots from them. Groups expand to at most 100 calendars each, and at most 50 calendars are returned after expansion."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Writing events"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["googlecalendar.create_event"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["googlecalendar.update_event"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Create an event, or update an existing one. Writable fields are the title, description, location, start and end, guests, recurrence rules, conference data, reminders, color, visibility, whether it blocks time, status, attachments, extended properties, and source. Both take a guest-notification setting. An update reads the event first and changes only the fields it is given."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"what-the-google-calendar-connector-does-not-expose","__idx":9},"children":["What the Google Calendar Connector Does Not Expose"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Everything below is blocked by account policy and cannot be enabled per account or per member:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["No event deletion."]}," The agent creates and updates events; removing one is your job in Google Calendar. It can still mark an event canceled through an update, which is how Google represents a canceled event — the entry stays on the calendar rather than disappearing."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["No moving, importing, or one-line event creation."]}," The agent cannot move an event to another calendar, import one, or create an event from a single line of natural-language text. It builds an event from the fields it was given, on the calendar you named."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["No calendar management."]}," The agent works with the calendars already in your list. It cannot create, delete, rename, or wipe a calendar, and it cannot add one to your list or take one out of it."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["No sharing changes, and no reading who has access."]}," The agent cannot grant anyone access to a calendar, change what they can do, or take access away — and it cannot tell you who already has access."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["No calendar settings."]}," Time zone, working hours, color definitions, and the rest of your Google Calendar settings are out of reach."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["No other Google products."]}," This connector reaches Google Calendar only. Google Search Console and Google Analytics are separate connectors, each with its own authorization."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["No reliable Google Meet link."]}," The agent is not a dependable way to mint a new Meet link for an event. Create the event in Google Calendar when the conference link is the point."]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"what-the-agent-can-see","__idx":10},"children":["What the Agent Can See"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The Google Calendar connector carries your own Google authorization, so the connected Google account's calendar access decides its reach:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Every calendar in that account's calendar list"]}," — your own calendars, plus the ones other people or your organization have shared with you and you have added. Calendars you have never added are out of reach, and the agent cannot add them."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["The detail each calendar's sharing level allows."]}," A calendar shared with you as free/busy only returns busy blocks, not titles or guests; the agent sees exactly what you see in Google Calendar and no more."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Busy time for anyone you can query."]}," Free/busy lookups follow Google's own rules — you can see whether a colleague is busy at a time without being able to read the event."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Writes only where that account could write."]}," Creating or updating an event on a calendar needs the same access Google requires of a person doing it by hand. On a calendar shared with you read-only, writes fail on Google's side."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Google enforces this when the request arrives, not Treasure AI Studio, and no prompt can widen it. The agent can narrow the view — tell it to look at one calendar, or one week — but never widen it."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning","name":"Your calendar's contents are in scope"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The authorization covers every calendar in your list, including personal ones you have added and events whose titles are sensitive. An agent searching for a topic can surface one of those in your chat, and a chat you share with a colleague shows them what it found. If that is not acceptable, remove the calendar from that Google account's list, or connect a Google account that only holds work calendars."]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"reference","__idx":11},"children":["Reference"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Item"},"children":["Item"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Value"},"children":["Value"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Connector"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Google Calendar"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Internal id"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["googlecalendar"]}," — the id the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Connection Required"]}," card shows in a chat"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Authentication"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["OAuth 2.0 Authorization Code with PKCE (user-to-machine), platform-managed Google OAuth application"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Google scopes requested"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Two: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["https://www.googleapis.com/auth/calendar.readonly"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["https://www.googleapis.com/auth/calendar.events"]},". Scopes for calendar management, settings, and sharing are deliberately not requested"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Required configuration"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["None. The administrator saves the connector with no fields to fill in"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Access"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Read plus event writes — reading calendars and events, free/busy lookups, and creating or updating events. Calendar management, calendar sharing, and event deletion are not available"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Google API used"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Google Calendar API v3"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Agent identity"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Acts as the authorizing Google account. Events it creates show that account as the organizer, and invitations arrive under that person's name"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Where requests are made"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Treasure AI's connector service, outside the agent's sandbox"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Egress domains"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["None — the sandbox never reaches the Calendar API, so no network policy rule is required"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Events per read"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["2,500 maximum, paged. The multi-calendar read applies that limit per calendar"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Calendars per read"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["250 maximum, paged"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Free/busy expansion"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["At most 100 calendars expanded per group, and at most 50 calendars returned after expansion"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Time format"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["An RFC 3339 timestamp plus an IANA time zone (for example ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Asia/Tokyo"]},") for a timed event, or a plain ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["YYYY-MM-DD"]}," date for an all-day event"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Guest notification"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Chosen per write: notify all guests, notify only guests outside your organization, or notify nobody. Google's own default applies when the agent does not specify one. Guests receive the event on their calendar either way"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Concurrent edits"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["An update sends the event's current version tag. If someone else changed the event in between, the connector re-reads and retries once, then fails rather than overwriting their change"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Token lifetime"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Short-lived access tokens, refreshed automatically, so a connection keeps working across sessions without reconnecting"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Connections per member"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["One, covering one Google account and every calendar in its list"]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"troubleshooting","__idx":12},"children":["Troubleshooting"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Issue"},"children":["Issue"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Solution"},"children":["Solution"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Google Calendar isn't listed on the Connections tab"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["An administrator must add the Google Calendar connector in ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Connector Settings"]}," and enable it."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The agent can't see a calendar you use"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The calendar must be in the connected Google account's calendar list. Add it in Google Calendar, then ask again — the agent cannot subscribe to a calendar itself. Also confirm you authorized the Google account that actually holds the calendar; the popup's account picker is easy to click through."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The agent sees a meeting but not its title or guests"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The calendar is shared with you as free/busy only. The agent inherits your view, so there is nothing to widen on the Treasure AI side. Ask the calendar's owner for fuller access."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Guests disappeared from an event the agent updated"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["An update replaces the guest list rather than adding to it. Re-add the missing guests, and next time tell the agent to keep the existing guests — see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#guests-and-notifications"},"children":["Guests and Notifications"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The agent invited someone you didn't intend to invite"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Update the event to the correct guest list. The agent cannot delete the event, so remove it in Google Calendar if the whole event was wrong. Ask for a confirmation of the guest list before the write next time."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A guest says they got no email"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Google sends invitation emails according to the notification setting used for that write, and the event still appears on their calendar without an email. Ask the agent to update the event and notify all guests."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The agent says the event changed while it was updating"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Someone else edited the event at the same moment. The connector re-reads and retries once before failing, so simply ask again."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The agent can't create an event on a calendar"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["It writes as you, so it can only write where you could write yourself. Check your access to that calendar in Google Calendar, or ask the agent to use your primary calendar instead."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["You asked the agent to delete an event and it refused"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Expected. Deleting an event is blocked for every account. Delete it in Google Calendar, or ask the agent to update it instead."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["You asked the agent to share a calendar and it refused"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Expected. Every access-control operation is blocked, including reading who has access. Change sharing in Google Calendar."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The agent says the connection needs to be reconnected"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The authorization expired or was revoked on the Google side — including by removing Treasure AI Studio from your Google account's third-party access. Reconnect from ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Settings → Connections"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The connector disappeared from the Connections tab"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["An administrator may have disabled it. Your connection is kept, but the agent cannot use Google Calendar until the connector is enabled again."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"next-steps","__idx":13},"children":["Next Steps"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/ai-studio/connections"},"children":["Connections"]}," — The general connection model and administrator controls"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/ai-studio/connections/google-search-console"},"children":["Connect Google Search Console"]}," — Let the agent read your Google Search performance data"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/ai-studio/connections/slack"},"children":["Connect Slack"]}," — Let the agent search, read, and post Slack messages as you"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/ai-studio/skills/skills"},"children":["Skills & Marketplace"]}," — How skills give the agent domain expertise"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/ai-studio/security"},"children":["Security Overview"]}," — How access control works in Studio"]}]}]},"headings":[{"value":"Connect Google Calendar","id":"connect-google-calendar","depth":1},{"value":"Objective","id":"objective","depth":2},{"value":"Prerequisites","id":"prerequisites","depth":2},{"value":"Who Does What","id":"who-does-what","depth":2},{"value":"Step 1 — Enable the Google Calendar Connector (Administrator)","id":"step-1--enable-the-google-calendar-connector-administrator","depth":2},{"value":"Step 2 — Authorize Your Connection (User)","id":"step-2--authorize-your-connection-user","depth":2},{"value":"Step 3 — Use Google Calendar in a Chat","id":"step-3--use-google-calendar-in-a-chat","depth":2},{"value":"Guests and Notifications","id":"guests-and-notifications","depth":2},{"value":"What the Agent Can Do","id":"what-the-agent-can-do","depth":2},{"value":"What the Google Calendar Connector Does Not Expose","id":"what-the-google-calendar-connector-does-not-expose","depth":3},{"value":"What the Agent Can See","id":"what-the-agent-can-see","depth":2},{"value":"Reference","id":"reference","depth":2},{"value":"Troubleshooting","id":"troubleshooting","depth":2},{"value":"Next Steps","id":"next-steps","depth":2}],"frontmatter":{"seo":{"title":"Treasure AI Studio - Connect Google Calendar","description":"Connect Google Calendar to Treasure AI Studio so agents can read your calendars, find open time across people, and create or update events for you."},"platforms":["Web","Desktop"]},"lastModified":"2026-09-30T13:35:41.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/products/ai-studio/connections/google-calendar","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}