この記事では、AIアプリケーション開発プラットフォームDifyの「HTTPリクエスト」ノードを使い、プログラミングコードを一切書かずにGoogle ToDoリスト (Google Tasks) にタスクを追加する方法を解説します。
この方法では、2つのHTTPリクエストノードを連携させます。最初のノードで認証に必要な「アクセストークン」を取得し、2つ目のノードでそのトークンを使ってタスクを追加する、という流れです。
パート1: 認証情報の取得(初回のみの準備)
このパートは、APIを利用するための「鍵」を取得する作業です。一度だけ行えば、その後は繰り返し利用できます。
ステップ1: Google Cloudでの認証情報作成
Google Cloudプロジェクトの準備:
Google Cloud Consoleにアクセスし、プロジェクトを新規作成するか、既存のものを選択します。
Google Tasks APIの有効化:
メニューから「APIとサービス」>「ライブラリ」を選択します。
「Google Tasks API」を検索し、「有効にする」をクリックします。
OAuth同意画面の設定:
「APIとサービス」>「OAuth同意画面」に移動します。
User Typeで「外部」を選び、アプリ名、メールアドレスなどを入力します。
「スコープ」の画面は何もせず次に進みます。
「テストユーザー」の画面で「+ ADD USERS」をクリックし、ご自身のGoogleアカウントのメールアドレス(ログインに使うもの)を追加して保存します。
クライアントIDとシークレットの発行:
「APIとサービス」>「認証情報」に移動します。
「+ 認証情報を作成」>「OAuthクライアントID」を選択します。
アプリケーションの種類で「ウェブアプリケーション」を選択します。
「承認済みのリダイレクト URI」に https://developers.google.com/oauthplayground を追加します。
「作成」をクリックすると、クライアントIDとクライアントシークレットが表示されます。これらを必ずコピーして安全な場所に保管してください。
ステップ2: リフレッシュトークンの取得
次に、有効期限のない「リフレッシュトークン」を取得します。
OAuth Playgroundの設定:
Google OAuth Playground にアクセスします。
右上の歯車アイコン⚙️をクリックし、「Use your own OAuth credentials」にチェックを入れ、ステップ1で取得したクライアントIDとクライアントシークレットを貼り付けます。
APIの承認:
左側の「Step 1」の入力欄に、以下のスコープを貼り付けます。
https://www.googleapis.com/auth/tasks
「Authorize APIs」ボタンをクリックし、表示される画面でご自身のGoogleアカウントを選択し、アクセスを許可します。
トークンの交換:
「Step 2」の画面に移動したら、「Exchange authorization code for tokens」ボタンをクリックします。
右側に表示される情報の中から、refresh_token の値をコピーします。これが最も重要な鍵です。
タスクを追加するノードの作成
次に、ステップ1で取得したアクセストークンを使って、実際にタスクを追加するノードを作成します。
ワークフローで、get_token ノードの後にもう一つ**「HTTPリクエスト」**ノードを追加し、add_taskなどと名付けます。
ノードを以下のように設定します。
HTTPメソッド: POST
API URL: https://tasks.googleapis.com/tasks/v1/lists/{{tasklist_id}}/tasks
{{tasklist_id}} の部分は、後でワークフロー実行時に入力する変数です。
💡 tasklist_idの調べ方: ブラウザでGoogle ToDoリストを開き、タスクを追加したいリストを選択した際のURL末尾にある英数字の羅列がIDです。
Headers:
Authorization: Bearer {{get_token.access_token}}
{{get_token.access_token}} の部分は、ステップ1のノード (get_token) の出力 (access_token) を参照しています。
Content-Type: application/json
Body: json を選択し、以下の内容を貼り付けます。
JSON
{
"title": "{{task_title}}"
}
{{task_title}} の部分も、ワークフロー実行時に入力する変数です。