Google カレンダー / Google ToDo 連携セットアップ¶
FastTask のタスクを Google へ書き出す(push)だけ の一方向連携です。 Google 側で作ったり編集したりした予定・ToDo が FastTask に取り込まれることはありません。
アプリにはクライアントシークレットを埋め込んでいないため、各自の Google Cloud プロジェクトで OAuth クライアントIDを発行して設定画面に入力する必要があります。以下はその手順です。
1. Google Cloud プロジェクトを作る¶
- https://console.cloud.google.com/ を開く
- 画面上部のプロジェクト選択 → 「新しいプロジェクト」
- プロジェクト名は何でもよい(例:
FastTask)→ 作成
2. API を有効化する¶
左メニュー「API とサービス」→「ライブラリ」から、次の2つを検索して 有効にする。
- Google Calendar API
- Google Tasks API
3. OAuth 同意画面を設定する¶
左メニュー「API とサービス」→「OAuth 同意画面」。
- User Type は 外部(External) を選択(Google Workspace 組織内だけで使うなら「内部」でも可)
- アプリ名(例:
FastTask)、ユーザーサポートメール、デベロッパー連絡先メールを入力 - スコープ: ここでは何も追加しなくて構いません(アプリ側が要求します)。 FastTask が要求するスコープは最小限の3つだけです。
.../auth/calendar.events… カレンダーの予定の作成・更新.../auth/tasks… ToDo の作成・更新.../auth/userinfo.email… 設定画面に「接続中のアカウント」を表示するためだけに使用- テストユーザー: 「公開ステータス」が テスト のままで問題ありません。
「テストユーザー」に 自分の 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 に入力して接続する¶
- FastTask の 設定(⌘,)→ Google連携
- クライアントID / クライアントシークレットを貼り付けて「保存」
- 「Googleに接続」を押す → 既定のブラウザが開く
- アカウントを選び、権限を許可する
- 「このアプリは確認されていません」と出たら「詳細」→「(アプリ名)に移動」を押す(テストモードのため)
- ブラウザに「連携が完了しました」と出たらタブを閉じる。設定画面に接続中のアカウントが表示されます。
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分以内に完了する必要があります |