コンテンツにスキップ

Google カレンダー / Google ToDo 連携セットアップ

FastTask のタスクを Google へ書き出す(push)だけ の一方向連携です。 Google 側で作ったり編集したりした予定・ToDo が FastTask に取り込まれることはありません。

アプリにはクライアントシークレットを埋め込んでいないため、各自の Google Cloud プロジェクトで OAuth クライアントIDを発行して設定画面に入力する必要があります。以下はその手順です。


1. Google Cloud プロジェクトを作る

  1. https://console.cloud.google.com/ を開く
  2. 画面上部のプロジェクト選択 → 「新しいプロジェクト」
  3. プロジェクト名は何でもよい(例: FastTask)→ 作成

2. API を有効化する

左メニュー「API とサービス」→「ライブラリ」から、次の2つを検索して 有効にする。

  • Google Calendar API
  • Google Tasks API

3. OAuth 同意画面を設定する

左メニュー「API とサービス」→「OAuth 同意画面」。

  1. User Type は 外部(External) を選択(Google Workspace 組織内だけで使うなら「内部」でも可)
  2. アプリ名(例: FastTask)、ユーザーサポートメール、デベロッパー連絡先メールを入力
  3. スコープ: ここでは何も追加しなくて構いません(アプリ側が要求します)。 FastTask が要求するスコープは最小限の3つだけです。
  4. .../auth/calendar.events … カレンダーの予定の作成・更新
  5. .../auth/tasks … ToDo の作成・更新
  6. .../auth/userinfo.email … 設定画面に「接続中のアカウント」を表示するためだけに使用
  7. テストユーザー: 「公開ステータス」が テスト のままで問題ありません。 「テストユーザー」に 自分の Google アカウントのメールアドレスを必ず追加してください。 ここに登録していないアカウントでは認証が access_denied で失敗します。

テストモードの refresh token は 7日で失効します。失効したら設定画面で「接続を解除」→ 「Googleに接続」をやり直してください。恒久的に使いたい場合はアプリを「本番」に公開します (自分だけが使う機密スコープなら審査なしで公開できますが、警告画面は出ます)。

4. OAuth クライアントID を発行する

左メニュー「API とサービス」→「認証情報」→「認証情報を作成」→「OAuth クライアント ID」。

  • アプリケーションの種類: 「デスクトップ アプリ」を選んでください。
  • 名前は任意(例: FastTask desktop)

リダイレクトURIの入力欄は出てきません。これで正しいです。 「デスクトップ アプリ」タイプは http://127.0.0.1:<任意のポート> へのリダイレクトが 自動的に許可される仕様で、FastTask は起動のたびに OS から空きポートを借りて使います (Google: Loopback IP address flow)。 もし種類を「ウェブ アプリケーション」で作ってしまうと、ポートが毎回変わるため動きません。作り直してください。

発行されると クライアントID と クライアントシークレット が表示されます。両方控えます。 (デスクトップアプリのシークレットは Google の仕様上「機密ではない」扱いですが、FastTask は 念のためローカルに 600 パーミッションで保存します。)

5. FastTask に入力して接続する

  1. FastTask の 設定(⌘,)→ Google連携
  2. クライアントID / クライアントシークレットを貼り付けて「保存」
  3. 「Googleに接続」を押す → 既定のブラウザが開く
  4. アカウントを選び、権限を許可する
  5. 「このアプリは確認されていません」と出たら「詳細」→「(アプリ名)に移動」を押す(テストモードのため)
  6. ブラウザに「連携が完了しました」と出たらタブを閉じる。設定画面に接続中のアカウントが表示されます。

6. 書き出し設定

項目 内容
ToDoに書き出す タスクを Google ToDo に作成。FastTask で完了にすると Google 側も完了になります
カレンダーに書き出す 期日のあるタスクだけを、その日の終日イベントとして作成します
自動書き出し タスクの追加・更新時に自動で push(既定OFF)。失敗してもアプリの操作は止まりません
カレンダーID 既定 primary(メインのカレンダー)。別カレンダーに入れるなら Google カレンダーの設定からIDをコピー
ToDoリスト 既定 @default。「リスト取得」を押すとリスト名から選べます
今すぐ同期 全タスクを手動で push

仕様・制限

  • 一方向だけです。 Google 側の変更は FastTask に戻ってきません。
  • FastTask でタスクを削除しても、Google 側は削除されません(対応表から外れるだけ)。 Google 側で手動で消してください。
  • 期日を外すと、そのタスクのカレンダー予定は削除されます。
  • 前回 push した内容(タイトル・状態・期日・URL)と変わっていないタスクは API を呼びません。
  • 自動書き出しは保存のたびに走りますが、前回の push が実行中なら今回はスキップします (最新の状態は次の保存で反映されます)。

保存される場所

アプリデータフォルダ(macOS は ~/Library/Application Support/com.fasttask.desktop/)。

ファイル 中身
google.json クライアントID・シークレット・リフレッシュトークン・各種設定(0600)
google_map.json FastTask のタスクID ↔ Google 側ID の対応表

タスク本体(data.json)に認証情報は混ざりません。 「接続を解除」を押すと Google 側でトークンを失効させ、手元の認証情報と対応表を消します。

うまくいかないとき

症状 原因と対処
access_denied OAuth同意画面の「テストユーザー」に自分のアカウントが入っていない
refresh_token が返りませんでした 同じクライアントで過去に許可済み。設定で「接続を解除」してからやり直す
invalid_client クライアントID/シークレットの貼り間違い、または種類が「デスクトップ アプリ」でない
数日経つと同期エラー テストモードの7日失効。再接続するか、アプリを本番公開する
Tasks リストが見つかりません ToDoリストIDが違う。「リスト取得」で選び直す
認証がタイムアウトしました ブラウザでの許可を5分以内に完了する必要があります