技術ブログ

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

/ 初心者向け

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

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

日々の業務でNotionを使っている方は多いのではないでしょうか? プロジェクト管理、タスクリスト、情報共有など、Notionはその柔軟性から様々な用途で活用されています。しかし、Notionのデータベースに手作業でデータを追加したり、更新したりするのは、時に手間がかかるものです。

そこで今回は、Google Apps Script(GAS)を活用して、Notionデータベースを自動で操作する方法をご紹介します!GASを使えば、Googleフォームからのデータ連携、Googleスプレッドシートの更新とNotionデータベースの同期、定型的なデータ作成などを自動化でき、業務効率を劇的に向上させることが可能です。

Notion APIの概要

NotionデータベースをGASから操作するには、Notionが提供するAPIを利用します。現在、Notionでは「Integration」という形でAPIが提供されており、これを利用することで、外部アプリケーションからNotionのデータにアクセスできます。

APIを利用するためには、いくつか準備が必要です。

  • Notion Integrationの作成: Notionの「Settings & Members」から「Integrations」を選択し、「New integration」を作成します。
  • API Keyの取得: 作成したIntegrationのシークレットキー(API Key)をコピーしておきます。これは非常に重要な情報なので、漏洩しないように注意してください。
  • データベースへのアクセス許可: 作成したIntegrationを、操作したいNotionデータベースの共有設定で「Share」に追加します。

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

GASからNotion APIを呼び出すために、UrlFetchAppというGASの機能を利用します。これは、HTTPリクエストを送信するための機能です。

1. データベースIDの取得

操作したいNotionデータベースのIDが必要です。データベースのURLを開くと、URLの末尾に32文字の英数字で構成されるIDがあります。これをコピーしておきましょう。

例: https://www.notion.so/YourWorkspace/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX の部分です。

2. API KeyとデータベースIDの設定

GASのスクリプトエディタを開き、以下のコードのようにAPI KeyとデータベースIDを変数に格納します。セキュリティのため、API Keyはスクリプトプロパティに保存することを推奨しますが、ここでは分かりやすさのために直接記述しています。

const NOTION_API_KEY = 'YOUR_NOTION_API_KEY'; // ここに取得したAPI Keyを入力
const DATABASE_ID = 'YOUR_DATABASE_ID'; // ここに取得したデータベースIDを入力
const NOTION_API_URL = 'https://api.notion.com/v1/databases/' + DATABASE_ID + '/query';

データベースからデータを取得する(READ)

まずは、Notionデータベースからデータを取得する方法を見ていきましょう。

function getNotionData() {
  const options = {
    'method': 'post',
    'headers': {
      'Authorization': 'Bearer ' + NOTION_API_KEY,
      'Content-Type': 'application/json',
      'Notion-Version': '2022-06-28' // 最新のAPIバージョンを指定
    }
  };

  const response = UrlFetchApp.fetch(NOTION_API_URL, options);
  const data = JSON.parse(response.getContentText());

  Logger.log(data);
}

このコードを実行すると、指定したデータベースの全レコードがJSON形式で取得され、GASのログに出力されます。'Notion-Version'は、APIの仕様変更に対応するために指定することが推奨されています。

取得したデータの構造

取得したdataオブジェクトには、resultsという配列が含まれています。このresults配列の各要素が、データベースの1レコードに相当します。各レコードはpropertiesというオブジェクトを持ち、ここにNotionデータベースの各カラムの情報が入っています。

データベースにデータを追加する(CREATE)

次に、新しいレコードをデータベースに追加する方法です。

function createNotionRecord() {
  const newPageData = {
    'parent': { 'database_id': DATABASE_ID },
    'properties': {
      'Name': {
        'title': [
          {
            'text': {
              'content': 'GASから追加したタスク'
            }
          }
        ]
      },
      'ステータス': {
        'select': {
          'name': '未着手'
        }
      },
      '期日': {
        'date': {
          'start': '2024-01-01'
        }
      }
    }
  };

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

  const createUrl = 'https://api.notion.com/v1/pages';
  const response = UrlFetchApp.fetch(createUrl, options);
  const result = JSON.parse(response.getContentText());

  Logger.log('新しいページが作成されました: ' + result.url);
}

newPageDataオブジェクトのproperties部分で、追加したいカラムとその値を指定します。カラム名(例: 'Name', 'ステータス', '期日')は、ご自身のNotionデータベースのカラム名に合わせてください。また、カラムのタイプ(title, select, dateなど)も正しく指定する必要があります。

まとめ

今回は、GASを使ってNotionデータベースのデータを取得(READ)し、新しいレコードを作成(CREATE)する方法を解説しました。UPDATEやDELETEといった操作も同様にAPIを通じて行うことができます。

GASとNotion APIを組み合わせることで、日々のルーチンワークを自動化し、より創造的で価値の高い業務に集中できるようになります。ぜひ、ご自身の業務に合わせて、様々な自動化を試してみてください!

次回は、UPDATEやDELETEの方法、そしてより実践的な活用例について掘り下げていきたいと思います。

GAS自動化の導入相談

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

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