技術ブログ

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

/ 初心者向け

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

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

皆さんは日々の業務でNotionを活用されていますか? Notinonは非常に柔軟でパワフルなツールですが、「もっと自動化したい」「他のサービスと連携させたい」と感じたことはありませんか? そんな時、Google Apps Script (GAS) が強力な味方になります!

GASを使えば、Google SpreadsheetやGmailだけでなく、Notionデータベースもプログラムから操作することが可能です。本記事では、GASを使ってNotionデータベースを自在に操るための基本から、具体的なコード例までを、初心者の方にも分かりやすく解説していきます。

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

GASでNotionデータベースを操作するメリットは多岐にわたります。

  • 作業の自動化: 定期的なデータ入力、レポート作成、タスク管理などの定型業務を自動化できます。
  • データ連携: Google Spreadsheetや他のWebサービスからNotionへデータをインポートしたり、逆にNotionのデータをエクスポートして分析したりできます。
  • カスタムワークフローの構築: NotionのデータベースとGASを組み合わせることで、独自の業務フローを構築できます。

Notion APIの基本

GASからNotionを操作するには、Notionが提供するAPIを利用します。具体的には、REST APIと呼ばれる形式でHTTPリクエストを送信し、Notionサーバーとやり取りを行います。

1. Notionインテグレーションの作成

まず、GASからNotionにアクセスするための「インテグレーション」を作成する必要があります。これは、GASにNotionへのアクセス権限を与えるための鍵のようなものです。

1. NotionのMy integrationsページにアクセスします。

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

3. インテグレーションの名前、連携させるWorkspaceを選択し、「Submit」をクリックします。

4. 「Internal Integration Token」が表示されます。このトークンは非常に重要なので、コピーして安全な場所に保管してください。このトークンは、GASからNotion APIを呼び出す際に認証情報として使用します。

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

操作したいNotionデータベースのIDも必要になります。データベースのURLを確認してください。URLは通常、以下のようになっています。

https://www.notion.so/<workspace-name>/<database-id>

<database-id>の部分が、GASで利用するデータベースIDです。こちらもコピーしておきましょう。

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

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

GASエディタを開き、以下のコードを記述します。

function readNotionDatabase() {
  const NOTION_API_KEY = 'YOUR_INTERNAL_INTEGRATION_TOKEN'; // ここにNotionインテグレーションのトークンを入力
  const DATABASE_ID = 'YOUR_DATABASE_ID'; // ここにNotionデータベースの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' // Notion 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);
  }
}
  • YOUR_INTERNAL_INTEGRATION_TOKENYOUR_DATABASE_ID を、先ほど取得した情報で置き換えてください。
  • Notion-Version は、APIの互換性を保つために指定することが推奨されています。最新のバージョンを確認して設定しましょう。
  • options.payloadJSON.stringify({}) としているのは、全件取得するためです。特定の条件で絞り込みたい場合は、この payload にクエリ条件を指定します。

この関数を実行すると、Notionデータベースの全ページ情報がdata変数に格納され、Loggerに表示されます。Notionのプロパティ(タイトル、テキスト、セレクトなど)は、data.results[i].properties の中に格納されています。

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

次に、Notionデータベースに新しいページを追加する方法です。以下のようなコードになります。

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 options = {
    'method': 'post',
    'headers': {
      'Authorization': `Bearer ${NOTION_API_KEY}`,
      'Content-Type': 'application/json',
      'Notion-Version': '2022-06-28'
    },
    'payload': JSON.stringify({
      'parent': {
        'database_id': DATABASE_ID
      },
      'properties': {
        'Name': {
          'title': [
            {
              'text': {
                'content': 'GASから追加した新しいタスク'
              }
            }
          ]
        },
        'Status': {
          'select': {
            'name': 'ToDo'
          }
        }
      }
    })
  };

  try {
    const response = UrlFetchApp.fetch(url, options);
    Logger.log(response.getContentText());
  } catch (e) {
    Logger.log('Error: ' + e);
  }
}
  • properties の部分は、追加したいNotionデータベースのプロパティ名と値に合わせて記述します。
  • 上記例では、Name(タイトルプロパティ)とStatus(セレクトプロパティ)に値を設定しています。

まとめ

今回は、GASを使ってNotionデータベースのデータを取得・追加する方法の基本をご紹介しました。Notion APIは、データの更新や削除、ページプロパティの更新など、さらに多くの操作が可能です。これらの基本をマスターすれば、NotionとGASを組み合わせた強力な自動化ワークフローを構築できるでしょう。

次回は、データの更新や削除、そしてより複雑なクエリの実行方法について解説する予定です。お楽しみに!

GAS自動化の導入相談

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

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