技術ブログ

GASでNotionデータベースを操作!簡単連携ガイド

/ 初心者向け

GASでNotionデータベースを操作!簡単連携ガイド

GASでNotionデータベースを操作!簡単連携ガイド

普段の業務でNotionを使っている皆さん、こんにちは!Notionのデータベース機能は非常に強力ですが、Google Apps Script (GAS) と連携させることで、さらにその可能性は広がります。今回は、GASを使ってNotionデータベースを操作する方法を、初心者の方にも分かりやすく解説します。

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

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

  • 自動化: 特定の条件でNotionデータベースのレコードを追加・更新・削除する。
  • データ連携: Googleフォームの回答をNotionデータベースに記録する、GASで集計したデータをNotionに反映させる。
  • 通知: Notionデータベースの変更をSlackやメールに通知する。
  • Webスクレイピング: Webから収集した情報をNotionデータベースに整理して保存する。

これらの自動化・連携により、日々のルーティンワークを効率化し、より創造的な業務に時間を割けるようになります。

Notion APIの基本

GASからNotionデータベースを操作するには、NotionのAPIを利用します。Notion APIは、HTTPリクエストを通じてNotionのデータにアクセスするためのインターフェースです。

1. 認証(Integration Tokenの発行)

APIを利用するためには、まず認証情報が必要です。Notionで「Integration」を作成し、APIキー(Integration Token)を取得します。

1. Notionの Settings & Members にアクセスします。

2. Integrations タブを選択します。

3. Develop your own integrations をクリックし、新しいIntegrationを作成します。

4. Integrationの名前、関連付けるWorkspaceを選択します。

5. Capabilities で、必要な権限(Read, Insert, Update, Deleteなど)を付与します。

6. 作成後、「Show API key」をクリックして、表示されるキーをコピーしておきます。これがIntegration Tokenです。

2. NotionデータベースのIDの取得

操作したいNotionデータベースのIDも必要です。データベースのページを開き、URLを確認します。

https://www.notion.so/<workspace>/<database_name>-<database_id>

このURLの末尾にある xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx の部分がデータベースIDです。

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

それでは、具体的なGASのコード例を見ていきましょう。

サンプルコード

以下のコードは、GASからNotionデータベースに新しいページ(レコード)を追加する例です。

function addRecordToNotion() {
  // 1. 設定情報
  const NOTION_API_KEY = 'YOUR_INTEGRATION_TOKEN'; // 取得したIntegration Tokenに置き換えてください
  const DATABASE_ID = 'YOUR_DATABASE_ID'; // 操作したいデータベースIDに置き換えてください
  const NOTION_API_URL = `https://api.notion.com/v1/pages`;
  const NOTION_VERSION = '2022-06-28'; // APIバージョン

  // 2. 追加したいデータ
  const newPageData = {
    'parent': {
      'database_id': DATABASE_ID
    },
    'properties': {
      '名前': {
        'title': [
          {
            'type': 'text',
            'text': {
              'content': 'GASから追加したタスク'
            }
          }
        ]
      },
      'ステータス': {
        'select': {
          'name': '未着手'
        }
      },
      '期日': {
        'date': {
          'start': '2023-10-27'
        }
      }
    }
  };

  // 3. HTTPリクエストの設定
  const options = {
    'method': 'post',
    'headers': {
      'Authorization': 'Bearer ' + NOTION_API_KEY,
      'Content-Type': 'application/json',
      'Notion-Version': NOTION_VERSION
    },
    'payload': JSON.stringify(newPageData)
  };

  // 4. APIリクエストの実行
  try {
    const response = UrlFetchApp.fetch(NOTION_API_URL, options);
    Logger.log('成功: ' + response.getContentText());
  } catch (e) {
    Logger.log('エラー: ' + e.toString());
  }
}

コードの解説

1. 設定情報: APIキー、データベースID、APIエンドポイントURL、APIバージョンを設定します。

2. 追加したいデータ: properties オブジェクトに、Notionデータベースの各カラムに対応するデータをJSON形式で記述します。カラムのタイプ(title, select, dateなど)に合わせて構造が変わります。

3. HTTPリクエストの設定: methodpost に、headers に認証情報とAPIバージョンを指定します。payload には、追加したいデータをJSON文字列に変換して格納します。

4. APIリクエストの実行: UrlFetchApp.fetch() を使ってAPIにリクエストを送信し、結果をログに出力します。エラーハンドリングも行っています。

事前準備

  • Notionデータベースに「名前(Title型)」「ステータス(Select型)」「期日(Date型)」のカラムを作成しておいてください。
  • YOUR_INTEGRATION_TOKENYOUR_DATABASE_ID を、ご自身の環境に合わせて必ず書き換えてください。
  • GASエディタで UrlFetchApp サービスが有効になっていることを確認してください(通常はデフォルトで有効です)。

今後のステップ

今回の例ではデータの追加のみでしたが、Notion APIを使えば、データの取得(GET)、更新(PATCH)、削除(DELETE)も可能です。これらの操作を組み合わせることで、より複雑な自動化シナリオを実現できます。

  • データ取得: POST /v1/databases/{database_id}/query エンドポイントを使用します。
  • データ更新: PATCH /v1/pages/{page_id} エンドポイントを使用します。
  • データ削除: DELETE /v1/pages/{page_id} エンドポイントを使用します。

GASとNotionの連携は、あなたの仕事の生産性を劇的に向上させる可能性を秘めています。ぜひ、このガイドを参考に、Notionデータベースの自動化に挑戦してみてください!

ご質問やさらに詳しい情報が必要な場合は、お気軽にお知らせください。

---

GAS自動化の導入相談

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

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