技術ブログ

GASでNotionデータベースを簡単操作!自動化の扉を開こう

/ 初心者向け

GASでNotionデータベースを簡単操作!自動化の扉を開こう

GASでNotionデータベースを操作する

Google Apps Script(GAS)は、Google Workspaceの各種サービスを連携させたり、業務を自動化したりするのに非常に便利なツールです。今回は、近年人気が高まっている情報管理ツール、NotionのデータベースをGASから操作する方法について、初心者の方にも分かりやすく解説していきます。

なぜGASでNotionを操作するのか?

Notionは高機能で柔軟なデータベース機能を持っていますが、GASと連携することで、その可能性はさらに広がります。

  • Googleフォームからのデータ連携: フォーム送信時にGASをトリガーとして、Notionデータベースに自動でレコードを追加できます。
  • Googleスプレッドシートとの同期: スプレッドシートの更新をNotionに反映させたり、その逆を行ったりできます。
  • 定期的なレポート作成: Notionデータベースのデータを集計し、メールで送信するなどの自動化が可能です。
  • 既存システムとの連携: 他のAPIやサービスとNotionを繋ぎ、より複雑なワークフローを構築できます。

Notion APIの基本

GASからNotionを操作するには、Notionが提供するAPIを利用します。具体的には、REST APIという形式で、HTTPリクエストを送受信することでデータのやり取りを行います。

1. Notion Integrationの作成

まず、Notion側でAPI連携を許可するための「Integration」を作成する必要があります。

1. Notionの「Settings & members」→「Integrations」にアクセスします。

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

3. Integrationの名前(例: GAS Notion Connector)を入力します。

4. 「Associated workspace」で、操作したいワークスペースを選択します。

5. 「Capabilities」では、必要な権限(Read, Insert, Update, Deleteなど)にチェックを入れます。

6. 「Submit」ボタンをクリックすると、「Internal Integration Token」が表示されます。このトークンは非常に重要なので、安全な場所にコピーしておきましょう。

2. Notionデータベースへのアクセス権限付与

作成したIntegrationを、操作したいNotionデータベースに紐づける必要があります。

1. 操作したいNotionデータベースのページを開きます。

2. 右上にある「…」メニューをクリックします。

3. 「Add connections」をクリックします。

4. 先ほど作成したIntegrationの名前を検索し、選択します。

5. 「Allow access」をクリックします。

これで、GASからこのデータベースにアクセスできるようになります。

GASでNotionデータベースにレコードを追加する

ここでは、最も基本的な操作である「レコードの追加」を例に、GASコードを見ていきましょう。

まず、GASエディタを開き、新しいスクリプトを作成します。

function addRecordToNotion() {
  // 1. Notion APIキー(Internal Integration Token)
  const NOTION_API_KEY = 'YOUR_INTERNAL_INTEGRATION_TOKEN'; // ここに取得したトークンを入力

  // 2. 操作したいNotionデータベースのID
  // データベースURLの末尾にあるID(例: https://www.notion.so/workspace/DATABASE_ID?v=...)
  const DATABASE_ID = 'YOUR_DATABASE_ID'; // ここにデータベースIDを入力

  // 3. Notion APIのエンドポイントURL
  const NOTION_API_URL = `https://api.notion.com/v1/pages`;

  // 4. 送信するデータ(Notionデータベースのプロパティに合わせる)
  // 'title' プロパティは必須です。
  const postData = {
    parent: {
      database_id: DATABASE_ID
    },
    properties: {
      'Name': {
        title: [
          {
            type: 'text',
            text: {
              content: 'GASから追加した新しいタスク'
            }
          }
        ]
      },
      'Status': {
        select: {
          name: 'To Do'
        }
      },
      'Due Date': {
        date: {
          start: '2023-12-31'
        }
      }
      // 他のプロパティも必要に応じて追加
    }
  };

  // 5. HTTPリクエストのオプション設定
  const options = {
    method: 'post',
    contentType: 'application/json',
    headers: {
      'Authorization': 'Bearer ' + NOTION_API_KEY,
      'Notion-Version': '2022-06-28' // 現在のAPIバージョンを指定
    },
    payload: JSON.stringify(postData)
  };

  // 6. Notion APIにリクエストを送信
  try {
    const response = UrlFetchApp.fetch(NOTION_API_URL, options);
    const responseCode = response.getResponseCode();
    const responseBody = response.getContentText();

    if (responseCode === 200) {
      Logger.log('レコードの追加に成功しました!');
      Logger.log(responseBody);
    } else {
      Logger.log('レコードの追加に失敗しました。');
      Logger.log('レスポンスコード: ' + responseCode);
      Logger.log('レスポンスボディ: ' + responseBody);
    }
  } catch (e) {
    Logger.log('エラーが発生しました: ' + e.toString());
  }
}

コードの解説

  • NOTION_API_KEY: 作成したIntegrationから取得したトークンをここに貼り付けます。
  • DATABASE_ID: NotionデータベースのURLから取得できるIDを指定します。
  • NOTION_API_URL: レコード追加用のAPIエンドポイントです。
  • postData: Notionデータベースに追加したいデータの構造を定義します。properties のキーは、Notionデータベースのプロパティ名と一致させる必要があります。プロパティのタイプ(title, select, date など)も適切に指定します。
  • options: HTTP POSTリクエストのメソッド、コンテンツタイプ、ヘッダー(APIキーとバージョン)を設定します。
  • UrlFetchApp.fetch(): GASでHTTPリクエストを送信するための関数です。エラーハンドリングも忘れずに行いましょう。

まとめ

GASとNotion APIを組み合わせることで、手作業で行っていたデータ入力や管理作業を劇的に効率化できます。今回紹介したのはレコード追加の一例ですが、他にもレコードの取得、更新、削除など、様々な操作が可能です。ぜひ、ご自身の業務に合わせた自動化を試してみてください!

次回は、GASでNotionデータベースからデータを取得し、スプレッドシートに反映させる方法などを解説する予定です。お楽しみに!

GAS自動化の導入相談

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

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