Set Events as Free
What it does: Transforms every synced event's free/busy status to "free", so the events appear in the target calendar but do not block your availability.
Use case: When syncing a read-only reference calendar (e.g. a holiday or team calendar) into your primary calendar, you want to see the events without them appearing as busy time.
function gate(event: GateEvent): GateResult {
return { pass: true, transform: { showAs: 'free' } };
}
How It Works
The transform.showAs field on the GateResult overrides the event's showAs property in the target calendar. Setting it to "free" means scheduling tools will not treat those time slots as unavailable. The original event in your source calendar is not modified.
Customization
Set events as free only outside business hours (block availability during work hours):
function gate(event: GateEvent): GateResult {
if (!event.isWeekday || event.hour < 9 || event.hour >= 17) {
return { pass: true, transform: { showAs: 'free' } };
}
return { pass: true };
}
Set all-day events as free but keep meetings as busy:
function gate(event: GateEvent): GateResult {
if (event.isAllDay) {
return { pass: true, transform: { showAs: 'free' } };
}
return { pass: true };
}
Combine with title redaction for a fully private reference calendar:
function gate(event: GateEvent): GateResult {
return {
pass: true,
transform: {
showAs: 'free',
title: 'Synced Event'
}
};
}
Related Recipes
- Redact Event Titles -- Replace titles with generic text for privacy
- Prefix Event Titles -- Add a prefix to distinguish synced events