メインコンテンツにスキップ

someday

Free to host calendar availability picker - open-source cal.com / calendly alternative built on Google-Apps-Script for Gmail users. Built with modern technologies like React, TypeScript, Shadcn/UI, and Vite. https://someday-demo.vercel.app

AI Summary

Someday

A free-to-host, Google Calendar–based scheduling tool (Calendly alternative) implemented with Google Apps Script

Target Users

Intermediate GAS developers who use Gmail and want to run their own external meeting scheduling flow

Problems Solved

Building a system that exposes Google Calendar availability and accepts bookings without relying on third-party services requires handling auth, UI and hosting complexity

Tags

Main Features

1
Free hosting with your Google account

Runs as a Web App on Google Apps Script, eliminating extra servers or hosting fees

2
Open-source and easy to customise

Frontend in React/TypeScript and GAS backend can be modified to fit custom requirements

3
Seamless Gmail / Calendar integration

OAuth scopes stay within the owner’s account, enabling availability queries and event creation while keeping data private

4
Workdays, hours and slot length via variables

Adjust constants in `backend/src/app.ts` to control working hours, days and slot duration

5
Option to self-host iframe to remove GAS banner

Embed the app on your own domain without the default GAS banner using the provided iframe example

Usage Examples

Fetch available time slots and log them

/**
 * Example configuration (override the defaults in backend/src/app.ts)
 */
const CALENDAR = "primary";            // Target calendar ID
const TIME_ZONE = "America/New_York";  // Time zone
const WORKDAYS = [1, 2, 3, 4, 5];       // Monday–Friday
const WORKHOURS = { start: 9, end: 17 }; // 9:00–17:00
const TIMESLOT_DURATION = 30;           // 30-minute slots

/**
 * Get availability for a given date.
 * fetchAvailability is provided by Someday backend.
 */
function sampleFetch() {
  const date = new Date(2024, 0, 15); // Jan 15, 2024
  const slots = fetchAvailability(date);
  Logger.log(slots); // Prints an array of available slots
}

Paste this into the Apps Script editor and run sampleFetch. Someday reads your Google Calendar, applies the workday/hour settings and returns an array of 30-minute slots that are free on the specified day.