Guide

Google Calendar CLI:ターミナルから予定を管理

Google Calendar CLI でターミナルから予定の一覧表示、会議の作成、空き状況の確認、共通の空き時間の検索を実行。Google Calendar の外部 OAuth 審査は検証済みスコープで最大6週間かかり、多くのカレンダースクリプトは予定の一覧、空き枠の検索、単一会議の作成だけが必要です。

Written by Aaron de Mello Senior Engineering Manager

Reviewed by Nick Barraclough

VerifiedCLI 3.1.1 · Google Calendar · last tested April 11, 2026

ターミナルから Google Calendar CLI を使うには?

一度認証すれば、nylas calendar listnylas calendar events listnylas calendar events createnylas calendar availability find が使えます。OAuth 認証情報の作成や Calendar API コードの記述なしに、ターミナルで Google Calendar ワークフローを実行できます。

コマンドラインから Google Calendar を管理したい場合、公式ルートでは1つの予定を操作する前に6つのステップが必要です:

  1. Google Cloud Console で GCP プロジェクトを作成
  2. Google Calendar API を有効化
  3. OAuth 同意画面を設定(外部アプリは Google のブランド確認審査を通る必要があり、機密スコープでは最大6週間かかる場合がある)
  4. OAuth 2.0 認証情報を作成、またはドメイン全体の委任が必要な場合はサービスアカウントを作成
  5. カレンダースコープを設定(読み書きには https://www.googleapis.com/auth/calendar、より狭い calendar.events も選択可能)
  6. トークン交換と API 呼び出しのコードを記述

内部アプリなら GCP セットアップ自体は高速です。コストがかかるのは非内部アプリの OAuth 審査と、ユーザーごとのクォータです。Calendar API はデフォルトでプロジェクトあたり毎分600リクエストに制限されており、大規模な自動化には Google へのクォータ申請が必要です。ターミナルから次の会議を確認したいだけの人にとって、このセットアップは過剰です。

1. インストール(セットアップ済みならスキップ)

Nylas CLI は macOS と Linux で Homebrew を使って30秒以内にインストールでき、合計4つのインストール方法に対応しています。バイナリは約25 MBで、セットアップ時に OS アーキテクチャを自動検出するため、インストール後の手動設定は不要です。

brew install nylas/nylas-cli/nylas を実行するか、はじめにガイドでシェルスクリプト、PowerShell、Go のインストール方法を参照してください。

2. Google で認証

Nylas CLI を使った Google Calendar の認証は、素の Google Calendar API で必要な6ステップの GCP プロジェクトセットアップの代わりに、コマンド1つで完了します。CLI がブラウザベースの OAuth2 フローを開き、認可コードを交換し、認証情報をローカルに保存します。トークンの更新はその後のすべての呼び出しで自動的に行われます。

nylas auth login コマンドは Google に calendaremail のスコープを要求します。フロー全体は60秒以内に完了し、保存されたトークンは明示的にアクセスを取り消すまでターミナルセッション間で永続します。

nylas auth login

認証後、カレンダーを一覧表示して接続を確認します。成功すると、共有カレンダーやセカンダリカレンダーを含む、認証済み Google アカウントに表示されるすべてのカレンダーが表示されます。ほとんどの Google Workspace ユーザーはデフォルトで3〜5個のカレンダーが表示されます。

nylas calendar list

Google カレンダーが名前と ID で一覧表示されるはずです。

3. セカンダリカレンダーと所有権の移行

Google Calendar はアカウントのライフサイクルイベント時に、セカンダリカレンダーをプライマリとは異なる扱いをします。従業員が Google Workspace ドメインを離れると、プライマリカレンダーはデフォルトで20日後に削除されますが、作成したセカンダリカレンダーは孤立する場合があります。Google Workspace 管理者ドキュメントによると、管理者はユーザーアカウントを削除する前にカレンダーの所有権を手動で移行する必要があります。

Nylas CLI はグラントに表示されるすべてのカレンダーを一覧表示し、プライマリかセカンダリかをフラグ表示できます。オフボーディング前の所有権監査に便利です。共有カレンダーが2〜3個ある典型的な Workspace ユーザーは、この棚卸しチェックを四半期ごとに実行すべきです。

# すべてのカレンダーを一覧表示し、非プライマリをフラグ表示
nylas calendar list --json | \
  jq -r '.[] | "\(.name) | primary=\(.is_primary) | id=\(.id)"'

# 特定の共有またはセカンダリカレンダーから予定を取得
nylas calendar events list --calendar cal_team_launch --days 14

Workspace を多用するチームでは、棚卸しと所有権がカレンダー運用の一部です。 Google Calendar 所有権変更ガイド でオフボーディングワークフローとプログラムによる共有カレンダー移行を解説しています。

4. Workspace 管理者の境界

Google Workspace は開発者がよく混同する3つの認証モデルを区別します:ユーザー OAuth グラント(Nylas CLI が使用)、サーバー間通信用のサービスアカウント、すべてのユーザーにまたがる管理者レベルアクセス用のドメイン全体の委任です。Google Workspace 認証概要によると、ドメイン全体の委任にはスーパー管理者がサービスアカウントごとに特定の OAuth スコープを承認する必要があります。

Nylas CLI はユーザーレベルの OAuth スコープで動作し、認証済みユーザーに表示される個人カレンダーと共有カレンダーをカバーします。10人以上の従業員カレンダーを同時に読み書きする必要があるワークフローでは、サービスアカウントを通じたドメイン全体の委任が Google の標準的なアプローチです。Yahoo と iCloud のカレンダーアクセスは主に個人アカウントの問題ですが、Google Workspace のカレンダー管理はテナントポリシーとライフサイクルの問題です。

5. Google Meet とイベントタイプのワークフロー

Google Calendar は参加者が1人以上いるイベントに Google Meet の会議詳細を自動的に添付します。Google のWorkspace ブログによると、Google Meet は毎日1億以上のミーティングリンクを生成しています。そのため、ほとんどのカレンダー自動化スクリプトは conferencing フィールドを処理する必要があります。Nylas CLI はフォーカスタイム、不在、勤務場所のメタデータと共に、これらの Meet 詳細を JSON 出力で公開します。

Nylas CLI を通じて参加者付きのイベントを作成すると、Google の自動会議設定がトリガーされます。CLI は参加者リストと時間範囲を渡し、Google Calendar がサーバー側で Meet リンクを追加します。結果のイベントオブジェクトには、参加リンクを含む conferencing.details.url フィールドが含まれます。

# 会議を作成し、Google に会議詳細を添付させる
nylas calendar events create \
  --title "Project Kickoff" \
  --start "2026-04-02 14:00" \
  --end "2026-04-02 15:00" \
  --participant alice@company.com \
  --participant bob@company.com

# Meet リンクと Google 固有のメタデータを確認
nylas calendar events list --days 7 --json | \
  jq '.[] | {title: .title, meet: .conferencing, metadata: .metadata}'

6. Workspace と個人カレンダーにまたがる空き状況

Google Calendar の空き状況確認には、カレンダー ID、時間範囲、タイムゾーンオフセットを指定して FreeBusy API エンドポイントをクエリする必要があります。Nylas CLI はこれを単一コマンドにラップし、表示可能なすべてのカレンダーの空き/ビジー枠を確認します。従業員が個人の Gmail と Workspace アカウントの両方を持つチームでは、ダブルブッキングを避けるために両方の ID を考慮した空き状況確認が必要です。

nylas calendar availability check コマンドは認証済みユーザーの空き時間とビジー時間を返します。nylas calendar availability find コマンドは2人以上の参加者のメールアドレスを受け取り、共通の空き時間を検索します。両コマンドとも --start--end フラグで検索範囲を制約できます。

# 自分の空き/ビジー枠を確認
nylas calendar availability check

# 同僚間で30分の空き枠を検索
nylas calendar availability find \
  --participants alice@company.com,bob@company.com \
  --duration 30

# 日付範囲で検索を制約
nylas calendar availability find \
  --participants alice@company.com,bob@company.com \
  --duration 60 \
  --start "2026-04-01" \
  --end "2026-04-05"

7. Google Calendar のコアコマンド

Nylas CLI は Google Calendar 向けに4つのコアイベント操作を提供します:一覧表示、作成、更新、削除。これらのコマンドは Google Calendar API の Events リソースに直接マップされますが、素の API で必要な40〜80行の Python ボイラープレートをスキップします。各コマンドは対象カレンダーがプライマリ、セカンダリ、共有 Workspace カレンダーのいずれであっても同じように動作します。

nylas calendar events list コマンドは次の N 日間の予定を返し、--show-tz で各予定のタイムゾーン情報を表示できます。終日イベントの作成には --all-day フラグと日付のみの --start 値を使用します。更新にはイベント ID が必要で、一覧コマンドの出力から取得できます。

# 今後の予定を一覧表示
nylas calendar events list --days 14 --show-tz

# 終日イベントを作成
nylas calendar events create \
  --title "Company Holiday" \
  --start "2026-04-10" \
  --all-day

# 既存の予定をリスケジュール
nylas calendar events update event_abc123 \
  --title "Sprint Planning (Moved)" \
  --start "2026-04-01 11:00" \
  --end "2026-04-01 12:00"

# 予定を削除
nylas calendar events delete event_abc123

8. スクリプティング用の JSON 出力

すべての Nylas CLI カレンダーコマンドは --json フラグに対応しており、デフォルトのテーブル形式の代わりに構造化 JSON を出力します。JSON 出力にはプロバイダに応じてイベントごとに15〜20のフィールドが含まれ、開始/終了時刻、参加者、会議、繰り返しルール、プロバイダ固有のメタデータをカバーします。JSON を jq にパイプすると、完全なスクリプトを書かずにフィルタリング、グループ化、レポート作成が可能です。

JSON 構造は Nylas のイベントスキーマに従い、時刻データは when キー配下、会議情報は conferencing キー配下にあります。Google Calendar の予定には color_idevent_type など、他のプロバイダにはないメタデータフィールドが含まれます。以下の例は、タイトルの抽出、日ごとのイベント数カウント、空き枠のフィルタリングの一般的なパターンを示します。

# 今後の予定をすべて JSON で取得
nylas calendar events list --days 7 --json

# イベントタイトルを抽出
nylas calendar events list --json | jq '.[].title'

# 今週の日ごとのイベント数をカウント
nylas calendar events list --days 7 --json | \
  jq 'group_by(.when.start_date) | map({date: .[0].when.start_date, count: length})'

# 空き枠のみを取得
nylas calendar availability check --json | \
  jq '.time_slots[] | select(.status == "free")'

Google Calendar API vs Nylas CLI

Google Calendar API は GCP プロジェクト、OAuth 同意画面、イベント一覧表示に40〜80行の Python が必要です。Nylas CLI は30秒のインストール後、単一コマンドで同じ結果を達成します。この比較は初期セットアップ時間から基本的なカレンダー CRUD 操作に必要なコード行数まで、7つの次元をカバーします。

タスクGoogle Calendar APINylas CLI
初期セットアップGCP プロジェクト + OAuth 同意画面 + 認証情報(15〜30分)brew install nylas/nylas-cli/nylas(30秒)
認証OAuth2 トークン交換コードの記述、リフレッシュトークンの処理nylas auth login
予定の一覧calendar.events().list() を使った Python/Node.js スクリプトの記述nylas calendar events list
空き状況の確認時間範囲とカレンダー ID を指定した freebusy.query()nylas calendar availability check
マルチプロバイダ対応Google のみ。Outlook には別途 Microsoft Graph SDK が必要。Google、Outlook、Exchange、Yahoo、iCloud、IMAP
トークン管理リフレッシュトークンの手動処理と保存自動
コード行数基本 CRUD で40〜80行(Python)0行。CLI コマンドのみ。

Google Calendar 固有のヒント

Google Calendar には Outlook、Yahoo、iCloud カレンダーにない、いくつかのプロバイダ固有の機能があります。11種類の数値カラーラベル、RRULE ベースの繰り返しイベント展開、Google Meet リンクの自動生成、フォーカスタイムや勤務場所などのイベントタイプが含まれます。Nylas CLI を通じて Google Calendar データをスクリプトで処理する際に、この4つの領域を理解しておくと予期しない結果を避けられます。

カラーラベル

Google Calendar はイベントに1から11の数値カラー ID を割り当て、各番号は Google のパレットの名前付きカラーにマッピングされます(例:カラー ID 11は「Tomato」)。--json で予定を一覧表示すると、color_id フィールドがメタデータオブジェクトに表示されます。カラー ID でのフィルタリングは、プロジェクトや優先度でイベントを分類するスクリプトに便利です。

# 特定のカラーのイベントを一覧表示(例:"Tomato" = color_id 11)
nylas calendar events list --json | \
  jq '.[] | select(.metadata.color_id == "11") | .title'

繰り返しイベント

Google Calendar は RFC 5545 で定義された RRULE パターンを使用して繰り返しイベントを保存します。例えば毎週のスタンドアップは、FREQ=WEEKLY;BYDAY=MO のような RRULE を持つ単一のマスターイベントとして保存され、Google が個別のオカレンスに展開します。Nylas CLI が予定を一覧表示すると、各オカレンスは個別のイベントオブジェクトとして表示されます。master_event_id フィールドは各オカレンスを元のマスターイベントにリンクし、シリーズ全体の一括編集に便利です。

# 予定を一覧表示し、繰り返しシリーズでフィルタ
nylas calendar events list --json | \
  jq '.[] | select(.master_event_id == "event_abc123") | {title, start: .when.start_time}'

Google Meet リンク

Google Calendar は Google Workspace または個人 Gmail アカウントで参加者1人以上のイベントを作成すると、Meet 参加リンクを自動生成します。会議データは JSON イベントオブジェクトの conferencing フィールドに表示されます。参加者のないイベント(終日リマインダーやフォーカスタイムブロックなど)には Meet リンクは付与されません。以下の jq フィルタは会議が添付されたイベントのみを抽出します。

# Google Meet リンク付きのイベントを検索
nylas calendar events list --json | \
  jq '.[] | select(.conferencing != null) | {title, meet: .conferencing.details.url}'

勤務場所とフォーカスタイムカレンダー

Google Calendar は他のプロバイダが対応していない3つの特殊なイベントタイプを導入しました:フォーカスタイム、不在、勤務場所。これらのイベントタイプは通常の会議とは異なる方法で空き状況に影響します。例えばフォーカスタイムブロックはユーザーをビジーとマークしますが、新しい会議の招待を自動辞退します。不在イベントは自動辞退し、主催者にカスタムメッセージを送信します。スケジューリングスクリプトがすべてのイベントを通常の会議として扱うと、これらの Google 固有のタイプを誤って解釈します。JSON 出力の metadatastatus フィールドを確認して区別してください。

# Google 固有のイベントメタデータを確認
nylas calendar events list --days 7 --json | \
  jq '.[] | {title: .title, status: .status, metadata: .metadata}'

次のステップ

このガイドでは Google Calendar の予定 CRUD、空き状況確認、Meet リンクやフォーカスタイムブロックなどのプロバイダ固有機能を解説しました。Nylas CLI は同じコマンド構文で6つのカレンダープロバイダに対応しているため、これらのパターンのほとんどは Outlook、Yahoo、iCloud カレンダーにもそのまま適用できます。