技術ブログ

Notion API連携入門!GASで自動化の扉を開けよう

/ 初心者向け

Notion API連携入門!GASで自動化の扉を開けよう

Notion API連携入門!GASで自動化の扉を開けよう

Notionは、ドキュメント作成、タスク管理、データベースなど、多機能なワークスペースとして多くの人に利用されています。しかし、Notion単体では限界を感じる場面もあるかもしれません。そんな時、Google Apps Script (GAS) と Notion API を連携させることで、Notionの可能性を大きく広げることができます。

この記事では、GASの専門家ブロガーとして、GASとNotion APIを連携させるための基本的な方法を、初心者の方にも分かりやすく解説します。簡単なデータ取得から、日々のタスクの自動化まで、GASでNotionをより便利に使いこなすための第一歩を踏み出しましょう。

なぜGASとNotion APIを連携させるのか?

GASとNotion APIを連携させることで、以下のようなことが可能になります。

  • データの自動取得・更新: Webサイトの情報や他のGoogleサービス(Google Spreadsheet, Google Calendarなど)のデータをNotionのデータベースに自動で追加・更新する。
  • Notionからの情報取得: Notionに蓄積された情報をGASで取得し、レポートを作成したり、他のサービスと連携させたりする。
  • ワークフローの自動化: 特定の条件を満たした場合にNotionのページを作成・更新したり、タスクを自動で割り当てたりする。
  • ルーチンワークの削減: 手作業で行っていたデータ入力や情報整理を自動化し、時間を節約する。

Notion APIの基本

Notion APIを利用するには、まず「インテグレーション(Integration)」を作成する必要があります。これは、外部アプリケーションがNotionにアクセスするための「鍵」のようなものです。

1. Notionの設定画面へ移動: Notionの左サイドバーから「Settings & members」→「Integrations」を選択します。

2. 「Develop your own integrations」をクリック: 新しいインテグレーションを作成します。

3. インテグレーションの作成: プロジェクト名などを入力し、「Submit」をクリックします。

4. 「Internal Integration Token」の取得: 作成したインテグレーションの詳細画面で、「Internal Integration Token」が表示されます。このトークンは機密情報なので、誰にも漏らさないように注意してください。

次に、GASからアクセスしたいNotionのデータベース(またはページ)に、作成したインテグレーションを共有(「Share」ボタンから「Invite」)しておく必要があります。

GASからNotion APIにアクセスする

GASからNotion APIにアクセスするには、HTTPリクエストを送信します。ここでは、最も基本的な「データベースのページ一覧を取得する」例を見てみましょう。

1. GASプロジェクトの準備

新しいGASプロジェクトを作成し、以下のコードを記述します。

function getNotionPages() {
  const NOTION_API_KEY = 'YOUR_INTERNAL_INTEGRATION_TOKEN'; // ここに取得したトークンを入力
  const DATABASE_ID = 'YOUR_DATABASE_ID'; // ここに共有したデータベースのIDを入力

  const url = `https://api.notion.com/v1/databases/${DATABASE_ID}/query`;

  const options = {
    'method': 'post',
    'headers': {
      'Authorization': `Bearer ${NOTION_API_KEY}`,
      'Content-Type': 'application/json',
      'Notion-Version': '2022-06-28' // Notion APIのバージョンを指定
    },
    // payload: JSON.stringify({})
    // payloadを指定すると、GETリクエストがPOSTリクエストになります。
    // 今回はデータベースの全ページを取得するため、payloadは不要です。
  };

  try {
    const response = UrlFetchApp.fetch(url, options);
    const data = JSON.parse(response.getContentText());
    Logger.log(data);
  } catch (e) {
    Logger.log('Error: ' + e);
  }
}
  • YOUR_INTERNAL_INTEGRATION_TOKEN には、先ほど取得したインテグレーションのトークンを貼り付けます。
  • YOUR_DATABASE_ID は、共有したデータベースのURLから取得できます。URLの末尾にある xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx の部分です。
  • Notion-Version は、APIの互換性を保つために指定が必要です。最新のバージョンを確認して設定しましょう。

2. コードの実行と結果の確認

GASエディタで getNotionPages 関数を選択し、実行ボタンをクリックします。実行後、「実行ログ」で取得したデータを確認できます。Logger.log(data) で出力されたJSON形式のデータの中に、データベースのページ情報が含まれています。

次のステップ:データの操作

Logger.log(data) で取得したデータ構造を理解することで、Notionのページタイトルやプロパティの値を取り出すことができるようになります。例えば、ページタイトルを取得するには、以下のようなコードを追加します。

  // ... (上記コードの続き)

  try {
    const response = UrlFetchApp.fetch(url, options);
    const data = JSON.parse(response.getContentText());
    
    if (data.results && data.results.length > 0) {
      data.results.forEach(page => {
        const pageTitle = page.properties.Name.title[0].plain_text; // ページタイトルを取得(Nameプロパティを想定)
        Logger.log('Page Title: ' + pageTitle);
      });
    }

    // Logger.log(data);
  } catch (e) {
    Logger.log('Error: ' + e);
  }
}

page.properties.Name.title[0].plain_text の部分は、Notionデータベースのプロパティ名に合わせて適宜変更してください。Notion APIは非常に柔軟なので、様々なプロパティの操作が可能です。

まとめ

今回は、GASとNotion APIを連携させるための基本的なステップをご紹介しました。インテグレーションの作成、トークンの取得、そしてGASからのHTTPリクエスト送信という流れを掴むことが重要です。

ここからさらに、Notionへのページ作成、プロパティの更新、特定の条件でのデータ取得など、様々な自動化のアイデアが生まれてくるはずです。

GASとNotion APIを組み合わせることで、あなたのNotion活用はより一層パワフルになります。ぜひ、色々な機能を試して、日々の業務を効率化してください!

免責事項: Notion APIは変更される可能性があります。最新の情報は公式ドキュメントをご確認ください。

GAS自動化の導入相談

請求書PDF作成、Gmail自動送信、Slack通知、スプレッドシート連携などを業務に合わせて実装できます。

請求書自動生成ツールを見る / SNS自動投稿ツールを見る