Cellbrook

Google Sheets guide · Calendars

How to update Google Calendar events from Google Sheets

You can change a meeting time, location or guest list in a spreadsheet and send the edited row to Google Calendar. We’ll show you how CalendarRows links each row to its event, how to check an update before sending and what to do when a run stops.

Add CalendarRows to Google SheetsFree to install from the Google Workspace Marketplace

Updated · 12 min read · By the Cellbrook team

The short answer

To update Google Calendar events from Google Sheets with CalendarRows, edit the row for an existing event, select the same calendar, preview the changes and send again. CalendarRows uses the event ID and notes it keeps in the sheet to identify the event. It sends changed rows and updates their associated events.

For example, you can change a meeting’s start time, replace a location or add guest email addresses in the mapped columns. Preview reports how many events will be created, updated, deleted or left unchanged, along with any rows that have problems. Preview itself does not change the calendar.

Our add-on has a free allowance of 50 calendar changes per day. Each create, update or delete counts as one change. If you want a free method without the add-on, the basic Apps Script in our create-events guide saves an event ID and updates basic event details on later runs. It updates every row on each run, and guests need more code.

This guide focuses on a sheet you will maintain over time. If your events already live in Calendar, you can import them into a new tab first. The first send of that imported tab has a different change count, explained below.

CalendarRows adds two columns named CalendarRows event ID and CalendarRows status. Their headers have notes starting with CalendarRows:. Each ID cell also has a short note containing the calendar and a fingerprint of the row. Together, the columns and notes help the add-on know which event belongs to which row and which rows have changed.

Keep both columns and their notes. Do not delete the ID or status columns, clear their notes or move an ID away from the event details it belongs to. The visible title and date are useful for people reading the sheet, but they are not a substitute for the event ID. Two meetings could have the same title, and a title or time may change later.

When you need a new event row, avoid copying the CalendarRows ID cells from an existing row. Copying an ID duplicates the identifier in the sheet, which makes it unsafe to treat the copy as a separate event. Enter the new event details without copying the existing ID cells, then preview before sending. Keep the original ID and its notes with the original row.

If you sort a schedule, make sure complete rows move together, including the CalendarRows columns and notes. The documentation does not specify a sorting procedure, so check the result on a copy first. Do not sort just the event details while leaving their IDs in a different order. Before any large rearrangement, compare a few titles, dates and IDs with the events they represent.

CalendarRows does not edit your own columns. You remain responsible for entering and checking the event details, including changes made by other people who can edit the sheet. Agree on which tab is the working schedule so that an old copy is not mistaken for the current one.

Edit a row and send it again

The following steps assume you have already sent the row with CalendarRows. If you are starting from a new list, first create the events using the create-events instructions. You need a Title and Start date for each event; other fields can be mapped when you need them.

  1. Find the event’s existing row and edit the cells you want to change. Leave the CalendarRows event ID and status columns and their notes in place.
  2. Open Extensions → CalendarRows → Open CalendarRows. On To Calendar, choose the sheet and header row.
  3. Choose the same calendar used for the existing event. The picker lists calendars where you can edit events. Check that the fields you changed are mapped to the intended columns.
  4. Choose all rows or selected rows and click Preview. Check the created, updated and unchanged counts, as well as any problems. Preview also reports deletes when applicable.
  5. Click Send to Calendar. Read the status for the edited row, then open the event in Calendar and check the result.

For a straightforward edit to one linked row, expect the preview to show one update. If it instead shows a create, stop and check the selected calendar and the row’s ID and notes before sending. If it shows more updates than expected, inspect the other rows and your selection. Preview gives you a chance to review the counts without changing events.

An UPDATED status means the row changed and its event was updated. An ERROR status includes a reason the row could not be sent. Fix the reported problem and send again. A PENDING status means an ID was reserved but the run stopped before the event was confirmed; send again to finish. CalendarRows will not make a duplicate for that pending row.

Only changed rows are sent after the link and fingerprint are established. That makes a second send useful for a small correction to a larger schedule: unchanged rows appear in Preview without each becoming another update. The first send of an imported tab is an exception, because those rows do not yet have fingerprints.

Examples: time, location and guests

Suppose these fictional meetings have already been sent to the same calendar. Each row also has its own CalendarRows ID and status cells, which are omitted from the table for readability. Keep those cells and their notes in the actual sheet.

TitleStart dateStart timeEnd timeLocationGuests
Planning meeting2026-11-109:00 AM10:00 AMRoom Amaria@example.com
Site visit2026-11-122:00 PM3:00 PMNorth entrance

Move a meeting. To move the planning meeting to 10:00 AM and keep it one hour long, change Start time to 10:00 AM and End time to 11:00 AM. Keep its date and ID with the row. Select the original calendar, map the time columns, preview and send. If the date changes too, edit Start date and any mapped End date as needed.

CalendarRows uses the spreadsheet’s time zone. Check it under File → Settings in Google Sheets before sending, especially when the people maintaining the schedule are in different time zones. Dates and times can be in a date cell or in separate columns. Check that the cells represent the intended dates and times, then verify the event after sending.

Change a location. If the site visit moves to the south entrance, replace North entrance with South entrance in that row’s Location cell. Make sure Location is mapped, preview the update and send it to the same calendar. The existing event stays associated with its row; you do not need a new event row just to change the location.

Add guests. To add a second guest to the planning meeting, put both addresses in the Guests cell, for example maria@example.com, lee@example.com. Map Guests, preview and send the changed row. CalendarRows accepts addresses separated by commas, semicolons or spaces, up to 50 per event. Text that is not an email address is ignored and noted in the status. The create-events guide says CalendarRows adds guests without sending invitation emails, so arrange any needed notice separately.

These are separate examples, but you can make several edits to one row before sending it. Review the complete row and the preview count so the final event reflects the schedule you intend. If an optional field is not mapped, check the mapping before relying on that column’s contents.

Update events imported from Calendar

If your events already exist in Google Calendar, CalendarRows can import them into a new sheet tab with their event IDs. On From Calendar, choose the calendar and a date range, optionally enter a word to filter events, and click Import events. Existing tabs are not changed. The free plan imports up to 100 events; Pro imports up to 5,000.

Review the new tab and make any intended edits. Then use To Calendar with that imported tab and the same calendar. Pay particular attention to the first Preview: the first time you send an imported tab back, every row with an event counts as an update, even if you edited only one row. CalendarRows has the event IDs from the import but does not yet have fingerprints for those rows.

Each of those first updates uses one calendar change. For example, if the preview shows 40 imported events to update, that is 40 changes, assuming they are sent successfully. After that first send, only rows you edit are sent. If your list is larger than the free daily allowance, plan for the task to pause and resume after the reset.

Importing creates a new tab; it does not refresh your existing working tab. The documentation describes sending from sheet to calendar and importing from calendar into a new tab. It does not describe edits made directly in Google Calendar syncing back into an existing sheet row. If both places have been edited, compare the details deliberately before sending so the row contains what you intend to put in the calendar. See our calendar export guide for the import workflow.

Choosing a different destination calendar has a specific consequence. CalendarRows creates new events in that calendar, and the row IDs then point to the new events. The events in the first calendar are not moved or removed. If your goal is to update the originals, check the calendar selection before clicking Send. Do not assume that sending to a second calendar transfers or cleans up the first one.

Understand the free limit and resume

CalendarRows Free allows 50 calendar changes per day. A create, an update and a delete each count as one change. An unchanged row is reported in Preview, but only changed rows are sent once their fingerprints are established. Check the preview and account for changes you have already used that day when deciding how much work to send.

For example, changing the time on 12 linked rows and sending those updates uses 12 changes. Adding three new event rows in the same batch would bring the total to 15 changes if all are sent successfully. An imported tab’s first send must be counted differently: each row with an event counts as an update, including rows you did not edit.

If a task pauses at the limit, resume after the reset. Check the progress card and row statuses to see what still needs attention. If a row is PENDING, send again to finish it; the reserved ID prevents a duplicate for that pending row. Correct any ERROR reason before retrying the affected row.

Pro allows 2,000 calendar changes per day, subject to fair use. If your schedule regularly needs more than the free allowance, compare the plans on the pricing page. For an occasional larger edit, you can instead plan around the free limit and resume after the reset.

Common problems

Preview shows a create instead of an update. Check that you selected the calendar used for the original event and that the row still has its CalendarRows ID and notes. Sending to a different calendar creates a new event there. If you cannot account for the preview, investigate before sending rather than assuming the existing event will move.

An event appears at the wrong time. Check the date and time cells, their mapping and the spreadsheet’s time zone under File → Settings. If you changed the start but meant to preserve a particular end time, check the End date and End time too. Preview and send a corrected row, then compare it with the event in Calendar.

The status says ERROR. Read the reason in the status. An unreadable date is one documented example. Correct the date or other reported problem, confirm that Title and Start date are present, and send again. If the cause is still unclear, consult the CalendarRows documentation and include the status text when asking for help.

The run stopped with PENDING. An ID was reserved but the event was not confirmed before the run stopped. Send again to finish. Do not copy the row’s ID into another row while trying to restart it.

A guest did not appear as expected. Check that Guests is mapped and that the cell contains email addresses, with commas, semicolons or spaces between them. CalendarRows accepts up to 50 per event and notes ignored non-email text in the status. Check the event after the update, and arrange any notice to guests separately.

An imported tab shows many updates. On its first send back to the same calendar, every row with an event counts as an update because the imported rows do not yet have fingerprints. Check the count against your remaining daily allowance. After that first send, only edited rows are sent.

A Calendar edit is missing from the sheet. The documented import puts events into a new tab. It does not describe syncing direct Calendar edits back into the existing tab. Compare the event and the working row before your next send, and enter the details you intend to maintain in the sheet.

Frequently asked questions

Can I update Google Calendar events from Google Sheets for free?

Yes. CalendarRows Free allows 50 calendar changes per day, and each event update counts as one change. You can also use the free Apps Script in our create-events guide to update basic event details without the add-on.

How do I change a calendar event time from a sheet?

Edit the start and, if needed, end date or time in the event’s row. Select the same calendar used for the event, check the column mapping and Preview, then send the row again. Check the spreadsheet’s time zone and verify the result in Calendar.

Why did sending my sheet create events in another calendar?

When you send rows to a different calendar, CalendarRows creates new events there. The original events stay in the first calendar, and the row IDs point to the new events. Choose the original calendar when you intend to update those events.

What do the CalendarRows event ID and status columns do?

The ID identifies the event associated with a row. The columns and their notes also hold information CalendarRows uses to match rows to events and recognize changes. Keep both columns and their notes with the rows.

Can I copy an event row to make a new event?

Avoid copying the CalendarRows event ID cells when preparing a new row. Copying an ID can give the new row the existing event’s identifier. Keep the original ID and its notes with the original row, and preview the new row before sending.

Does a change made in Google Calendar update the existing sheet row?

The CalendarRows documentation describes sending from a sheet to Calendar and importing events from Calendar into a new tab. It does not describe changes made directly in Calendar being synced back into the existing sheet row.

Why does the first send of an imported tab count every event as an update?

An imported tab includes event IDs, but CalendarRows does not yet have fingerprints for those rows. On the first send back to the same calendar, every row with an event counts as an update. After that, only rows you edit are sent.

Disclosure: we make CalendarRows, the Google Sheets add-on mentioned in this guide. The basic Apps Script in our create-events guide can update basic event details without the add-on.

Google Sheets, Google Calendar and Google Workspace are trademarks of Google LLC. CalendarRows and Cellbrook are not affiliated with or endorsed by Google.