技術ブログ

GASでNotionデータベースを自在に操作!入門ガイド

/ 初心者向け

GASでNotionデータベースを自在に操作!入門ガイド

GASでNotionデータベースを自在に操作!入門ガイド

皆さんは普段、Notionをどのように活用されていますか?ドキュメント作成、タスク管理、データベースとして…と、その用途は多岐にわたります。

今回は、そんなNotionのデータベースを、Google Apps Script (GAS) を使ってプログラムから操作する方法をご紹介します。

GASを使えば、例えば「Googleフォームで集めた情報をNotionデータベースに自動登録する」「GASで処理した結果をNotionに記録する」「GASでNotionのデータを集計してスプレッドシートに表示する」といった、様々な自動化や連携が可能になります。

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

  • 自動化の促進: 定型的なデータ入力や更新作業を自動化し、作業効率を劇的に向上させます。
  • 他サービスとの連携: Googleフォーム、Gmail、スプレッドシートなど、GASで連携できる他のGoogleサービスとNotionを繋げることができます。
  • カスタムワークフローの構築: 独自のビジネスロジックに基づいたデータ処理や、Notionのデータを活用したカスタムアプリケーションの開発が可能です。

Notion APIの基本

GASからNotionデータベースを操作するには、Notionが提供するAPIを利用します。Notion APIは、RESTful APIとなっており、HTTPリクエスト(GET, POST, PATCH, DELETEなど)を使ってデータベースの操作を行います。

必要なもの

1. Notion Integration Token: Notionの「My integrations」ページで取得できます。このトークンがAPIへのアクセス認証に使われます。

2. Notion Database ID: 操作したいデータベースのIDです。URLの末尾にある長い英数字の文字列です。

GASでNotionデータベースにアクセスしてみよう!

まずは、GASでNotionデータベースからデータを取得する基本的なコードを見てみましょう。

1. データベースの全件取得

function getAllDatabaseItems() {
  const NOTION_API_KEY = 'YOUR_NOTION_API_KEY'; // 取得したAPIキー
  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' // 最新のAPIバージョンを指定
    },
    'payload': JSON.stringify({})
  };

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

コードの解説:

  • NOTION_API_KEYDATABASE_IDは、ご自身のものに置き換えてください。
  • https://api.notion.com/v1/databases/${DATABASE_ID}/query が、データベースのデータを取得するためのAPIエンドポイントです。
  • headersには、認証情報(APIキー)とAPIバージョンを指定します。
  • payloadは、今回は空で送信していますが、フィルタリングやソートを行う際に利用できます。

2. データベースに新規アイテムを追加する

新しいページ(アイテム)をデータベースに追加するには、POSTリクエストを使います。

function addDatabaseItem() {
  const NOTION_API_KEY = 'YOUR_NOTION_API_KEY';
  const DATABASE_ID = 'YOUR_DATABASE_ID';

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

  const itemTitle = 'GASから追加したアイテム'; // 追加するアイテムのタイトル
  const propertyName = 'Name'; // Notionデータベースのタイトルプロパティ名

  const payload = {
    'parent': { 'database_id': DATABASE_ID },
    'properties': {
      [propertyName]: {
        'title': [
          {
            'text': {
              'content': itemTitle
            }
          }
        ]
      }
      // 他のプロパティもここに追加できます
      // 'Status': {
      //   'select': {
      //     'name': 'To Do'
      //   }
      // }
    }
  };

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

  try {
    const response = UrlFetchApp.fetch(url, options);
    const data = JSON.parse(response.getContentText());
    Logger.log('アイテムが追加されました: ' + JSON.stringify(data));
  } catch (e) {
    Logger.log('Error: ' + e);
  }
}

コードの解説:

  • parent.database_id には、追加先のデータベースIDを指定します。
  • properties オブジェクトの中に、Notionデータベースの各プロパティに対応するデータを記述します。上記の例では、タイトル(Nameプロパティ)のみを追加しています。
  • 他のプロパティ(Select、Date、Numberなど)を追加したい場合は、Notion APIのドキュメントを参照して、適切な形式で記述してください。

まとめ

今回は、GASを使ってNotionデータベースからデータを取得し、新しいアイテムを追加する方法を解説しました。

UrlFetchApp を使ってNotion APIにリクエストを送信することで、データベースの操作がプログラムから可能になります。

次回は、アイテムの更新や削除、より高度なフィルタリングやソートといった、さらに踏み込んだ内容について解説する予定です。ぜひ、GASとNotionの連携で、あなたのワークフローをさらに効率化してください!

GAS自動化の導入相談

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

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