技術ブログ

GASでNotionデータベースを自在に操作!基本から応用まで

/ 初心者向け

GASでNotionデータベースを自在に操作!基本から応用まで

NotionデータベースをGASで操作しよう!

Notionは非常に柔軟でパワフルなツールですが、さらにGAS(Google Apps Script)と連携させることで、その可能性は無限大に広がります。例えば、「Googleフォームに回答があったらNotionデータベースに自動登録する」「GASで生成したレポートをNotionに格納する」といった自動化が実現できます。

この記事では、GASを使ってNotionデータベースを操作するための基本的な方法から、少し応用的な使い方までを、初心者の方にも分かりやすく解説していきます。

Notion APIの準備

GASからNotionデータベースを操作するには、NotionのIntegration機能を利用します。まずは、NotionでAPI Integrationを作成しましょう。

1. Notionの「Settings & Members」から「My integrations」にアクセスします。

2. 「New integration」ボタンをクリックします。

3. Integrationの名前を入力し、Workspaceを選択します。

4. 「capabilities」で「Read」と「Insert」にチェックを入れます。(必要に応じて「Update」や「Delete」も追加できます)

5. 「Submit」をクリックすると、API Keyが表示されるので、これをコピーして安全な場所に保管しておきましょう。

次に、作成したIntegrationを操作したいNotionデータベースに「Share」から招待します。

GASでの基本操作:データベースの全件取得

GASでNotion APIを呼び出すには、UrlFetchAppサービスを利用します。APIエンドポイントは https://api.notion.com/v1/databases/{database_id}/query です。{database_id} は対象のデータベースIDに置き換えてください。

function getNotionDatabase() {
  const NOTION_API_KEY = 'YOUR_NOTION_API_KEY'; // ここにAPI Keyを入力
  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'
    }
  };

  try {
    const response = UrlFetchApp.fetch(url, options);
    const json = JSON.parse(response.getContentText());
    Logger.log(json);
    return json;
  } catch (e) {
    Logger.log('Error: ' + e.toString());
  }
}

上記のコードの YOUR_NOTION_API_KEYYOUR_DATABASE_ID を、先ほど取得したAPI Keyと対象のデータベースIDに置き換えて実行してください。Logger.log(json) で取得したデータを確認できます。データベースIDは、NotionのURLの https://www.notion.so/yourworkspace/DATABASE_ID?v=... の部分にあります。

データの追加:新しいページを作成する

新しいページを作成するには、https://api.notion.com/v1/pages エンドポイントにPOSTリクエストを送ります。

function addPageToNotion() {
  const NOTION_API_KEY = 'YOUR_NOTION_API_KEY'; // ここにAPI Keyを入力
  const DATABASE_ID = 'YOUR_DATABASE_ID'; // ここにデータベースIDを入力

  const url = 'https://api.notion.com/v1/pages';

  const payload = {
    'parent': {
      'database_id': DATABASE_ID
    },
    'properties': {
      '名前': {
        'title': [
          {
            'text': {
              'content': 'GASから追加したページ'
            }
          }
        ]
      },
      'ステータス': {
        'select': {
          'name': 'ToDo'
        }
      }
      // 他のプロパティもここに追加できます
    }
  };

  const options = {
    'method': 'post',
    'headers': {
      'Authorization': `Bearer ${NOTION_API_KEY}`,
      'Content-Type': 'application/json'
    },
    'payload': JSON.stringify(payload)
  };

  try {
    const response = UrlFetchApp.fetch(url, options);
    Logger.log(response.getContentText());
  } catch (e) {
    Logger.log('Error: ' + e.toString());
  }
}

payload オブジェクト内の properties は、Notionデータベースのプロパティ名と値に合わせて適切に記述する必要があります。プロパティの型(Title, Select, Dateなど)によってJSONの構造が変わるので注意してください。詳細はNotion APIのドキュメントを参照すると良いでしょう。

まとめ

GASとNotion APIを組み合わせることで、日々の業務を劇的に効率化できます。今回紹介した全件取得とページ追加は、基本的な操作ですが、これらを応用すれば、以下のような自動化も夢ではありません。

  • Googleフォームと連携: フォーム回答をNotionデータベースに自動追加。
  • Googleスプレッドシートと連携: スプレッドシートのデータをNotionに同期。
  • メール自動送信: Notionのステータス変更をトリガーにメールを送信。

まずは、今回紹介したコードを試してみて、Notionデータベースへのアクセスに慣れてみてください。さらに高度な操作(ページ更新、削除、プロパティの検索など)もAPIで可能ですので、ぜひNotion APIの公式ドキュメントも参照しながら、色々な自動化に挑戦してみてください!

GAS自動化の導入相談

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

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