技術ブログ

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

/ 初心者向け

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

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

Notionは多機能で柔軟なデータベース機能が魅力ですが、「あのデータをGASで取得してスプレッドシートにまとめたい」「GASからNotionに自動で情報を登録したい」といったニーズも多いのではないでしょうか。

今回は、Google Apps Script (GAS) を使ってNotionデータベースを操作する方法を、初心者の方にも分かりやすく解説していきます。

Notion APIの概要と準備

GASからNotionを操作するには、Notionが提供するAPIを利用します。具体的には、Notion APIの「Integration」を作成し、APIキーを取得する必要があります。

1. Notionの「Settings & Members」にアクセス

2. 「My integrations」タブを選択

3. 「New integration」ボタンをクリック

4. 「Associated workspace」や「Development name」などを入力し、「Send internal integration」をクリック(ワークスペースのオーナーである必要があります)。

5. 発行された「Internal Integration Token」をコピーします。これがAPIキーとなります。

次に、操作したいNotionデータベースのページで、作成したIntegrationにアクセス権を付与します。「Share」ボタンから「Invite」で、作成したIntegration名を選択してください。

GASでの基本的な操作

GASからNotion APIへリクエストを送信するには、UrlFetchApp サービスを使用します。HTTP POSTメソッドで、APIエンドポイントと必要なヘッダー、ボディを送信します。

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

データベースの全データを取得するには、databases/{database_id}/query エンドポイントを使用します。database_id は、NotionのURLに含まれるIDです。

function getNotionData() {
  const NOTION_API_KEY = 'YOUR_INTERNAL_INTEGRATION_TOKEN'; // ここに取得した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);
    // ここで取得したデータを加工してスプレッドシートなどに書き込む処理を実装
  } catch (e) {
    Logger.log('Error: ' + e.toString());
  }
}

payload には、クエリ条件を指定することも可能です。例えば、特定のプロパティでフィルタリングしたり、ソート順を指定したりできます。

データベースにデータを追加する

新しいページ(レコード)を追加するには、pages エンドポイントを使用します。parent には、追加先のデータベースIDを指定します。

function addNotionPage() {
  const NOTION_API_KEY = 'YOUR_INTERNAL_INTEGRATION_TOKEN';
  const DATABASE_ID = 'YOUR_DATABASE_ID';

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

  const payload = {
    'parent': { 'database_id': DATABASE_ID },
    'properties': {
      'Name': {
        'title': [
          {
            'text': {
              'content': '新しいタスク'
            }
          }
        ]
      },
      'ステータス': {
        'select': {
          'name': '未着手'
        }
      }
    }
  };

  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);
    Logger.log(response.getContentText());
    Logger.log('ページが正常に追加されました。');
  } catch (e) {
    Logger.log('Error: ' + e.toString());
  }
}

properties の部分は、Notionデータベースのプロパティ名と型に合わせて記述する必要があります。'Name' はデフォルトのタイトルプロパティ、'ステータス' はカスタムプロパティの例です。

データベースのページを更新する

既存のページを更新するには、pages/{page_id} エンドポイントを使用します。page_id は更新したいページのIDです。

データベースのページを削除する

ページを削除するには、pages/{page_id} エンドポイントにDELETEメソッドでリクエストを送信します。

まとめ

GASとNotion APIを組み合わせることで、Notionデータベースのデータを活用した様々な自動化が可能になります。今回ご紹介した基本操作をマスターすれば、あなたのNotion活用がさらに広がるはずです。ぜひ、色々な自動化に挑戦してみてください!

GAS自動化の導入相談

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

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