【Googleスプレッドシート】Notionと連携してデータベース同期!APIキー連携の手順

【Googleスプレッドシート】Notionと連携してデータベース同期!APIキー連携の手順
🛡️ 超解決

Notionで管理しているデータベースをGoogleスプレッドシートでも活用したいとお考えではありませんか。NotionにはAPIが用意されており、GoogleスプレッドシートのApps Scriptと組み合わせることで、データベースの同期が可能です。この記事では、NotionのAPIキーを取得し、スプレッドシートにデータを自動反映する手順を詳しく解説します。APIキーの取得からスクリプトの実装、定期実行の設定までを一通り学べます。

【要点】NotionとスプレッドシートをAPI連携するための手順をまとめました

  • Notion APIキーの取得: Notionインテグレーションを作成し、APIキーを発行します。
  • Apps Scriptによるデータ取得: スプレッドシートのApps ScriptでHTTPリクエストを送り、データベース内容を取得します。
  • 定期実行の設定: トリガーを使って指定間隔で自動同期を実現します。

ADVERTISEMENT

Notion API連携の仕組みと準備

Notion APIは、データベースの読み書きを可能にするRESTfulインターフェースです。APIキーを使うことで、スプレッドシートからNotionのデータベースにアクセスできます。連携には以下の準備が必要です。

  • Notionのアカウントと、同期したいデータベースがあること。
  • Googleスプレッドシートのアカウントと、Apps Scriptが使えること。
  • Notionインテグレーション(ボット)を作成し、データベースと共有すること。

インテグレーションの作成は無料で行えます。データベースごとにアクセスを許可する必要がありますが、手順は簡単です。以下で詳しく説明します。

スプレッドシートとNotionをAPI連携する手順

ここでは、Notionのデータベースからスプレッドシートにデータを同期する手順を解説します。APIキーの取得からスクリプト作成、定期実行までを順に進めます。

1. Notionインテグレーションを作成してAPIキーを取得する

  1. Notionのインテグレーションページを開く
    ブラウザで「https://www.notion.so/my-integrations」にアクセスします。Notionアカウントでログインしてください。
  2. 新しいインテグレーションを作成する
    「新しいインテグレーション」ボタンをクリックし、任意の名前(例:スプレッドシート同期)を入力します。Workspaceは自身のワークスペースを選択します。
  3. APIキーをコピーする
    作成後に表示される「Internal Integration Token」がAPIキーです。このキーを安全な場所に保存します。キーは「secret_」で始まる文字列です。
  4. データベースとインテグレーションを共有する
    同期したいデータベースを開き、右上の「共有」ボタンからインテグレーション名を追加します。これでAPIからアクセスできるようになります。

2. データベースIDを確認する

  1. データベースのURLからIDを抜き出す
    Notionのデータベースをブラウザで開いたときのURLに含まれる32文字の英数字がデータベースIDです。URLは「https://www.notion.so/workspace/<データベースID>?v=…」のような形式です。
  2. IDをメモする
    データベースIDは後ほどスクリプトで使用します。正確にコピーしてください。

3. スプレッドシートでApps Scriptを開く

  1. スプレッドシートを開く
    Googleスプレッドシートで新しいファイルを作成するか、既存のシートを開きます。
  2. 拡張機能メニューを開く
    メニューバーから「拡張機能」→「Apps Script」を選択します。エディタが新しいタブで開きます。

4. スクリプトを記述する

エディタに以下のコードを貼り付けます。APIキーとデータベースIDはご自身のものに置き換えてください。

function getNotionData() {
  const apiKey = 'secret_XXXXX'; // あなたのAPIキー
  const databaseId = 'YYYYYYYYYY'; // データベースID
  const url = `https://api.notion.com/v1/databases/${databaseId}/query`;
  const options = {
    method: 'post',
    headers: {
      'Authorization': `Bearer ${apiKey}`,
      'Content-Type': 'application/json',
      'Notion-Version': '2022-06-28'
    },
    payload: JSON.stringify({})
  };
  const response = UrlFetchApp.fetch(url, options);
  const data = JSON.parse(response.getContentText());
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const results = data.results;
  const rows = results.map(item => {
    const props = item.properties;
    const name = props.Name?.title[0]?.text.content || '';
    const status = props.Status?.select?.name || '';
    const date = props.Date?.date?.start || '';
    return [name, status, date];
  });
  sheet.getRange(2, 1, rows.length, rows[0].length).setValues(rows);
}

上記のコードは、データベースに「Name」「Status」「Date」というプロパティがあることを想定しています。実際のプロパティ名に合わせて修正してください。タイトルプロパティは「Name」、セレクトプロパティは「Status」、日付プロパティは「Date」としています。

5. スクリプトを実行して動作を確認する

  1. 関数を選択して実行する
    エディタ上部の関数プルダウンから「getNotionData」を選び、「実行」ボタンをクリックします。初回は権限の確認画面が表示されるので、許可を与えてください。
  2. シートにデータが書き込まれることを確認する
    正しく動作すれば、スプレッドシートのアクティブシートにNotionのデータが1行ずつ出力されます。

6. トリガーを設定して定期実行する

  1. Apps Scriptエディタでトリガーを開く
    左側のメニューから「トリガー」アイコン(時計マーク)をクリックします。
  2. 新しいトリガーを追加する
    「トリガーを追加」をクリックし、以下の設定をします。
  • 実行する関数: getNotionData
  • 実行するデプロイ: Head
  • イベントのソース: 時間主導型
  • 時間ベースのトリガーのタイプ: 時間ベースのタイマー
  • 時間の間隔: 任意(例:1時間ごと)

これで指定した間隔で自動的にデータが同期されます。必要に応じて間隔を調整してください。

API連携でよくあるトラブルと対処法

API連携ではいくつかの問題が発生することがあります。代表的なトラブルとその解決方法を紹介します。

認証エラー(401 Unauthorized)が発生する

APIキーが間違っているか、データベースとインテグレーションが共有されていない可能性があります。APIキーが正しくコピーされているか確認し、Notionのデータベースの「共有」設定でインテグレーションを追加し直してください。

レート制限(429 Too Many Requests)に達する

Notion APIには1分あたりのリクエスト数に制限があります。短時間に多くのリクエストを送るとブロックされることがあります。トリガーの間隔を長くするか、スクリプト内でリクエスト間にUtilities.sleep()を挿入して調整します。

データが正しく書き込まれない

プロパティ名や型がスクリプトと実際のデータベースで一致していないことが原因です。Notionのデータベース構造を確認し、プロパティ名(例:Name, Status)や型(タイトル、セレクト、日付など)に合わせてコードを修正します。特に、タイトルプロパティの場合は`.title[0]?.text.content`のようにアクセスする必要があります。

トリガーが実行されない

トリガーの設定が正しいか確認します。Apps Scriptのプロジェクトで「実行」→「すべてのトリガーを表示」から確認できます。また、スクリプトにエラーがあるとトリガーが停止することもあります。エラーログを確認して対処してください。

ADVERTISEMENT

連携方法の比較

Notionとスプレッドシートを連携する方法は他にもあります。主な方法と特徴を比較します。

方法 難易度 費用 柔軟性
手動コピー&ペースト 低い 無料 低い
Zapier / Make(旧Integromat) 中程度 有料プランあり 高い
Apps Script + Notion API 中程度 無料 高い

手動コピーは簡単ですが、更新のたびに人手が必要です。Zapierなどのノーコードツールは手軽で応用範囲が広いですが、無料枠に制限があります。一方、Apps ScriptとAPIを使う方法は完全無料で、コード次第で自由にカスタマイズできます。ただし、APIの仕様理解やコーディングが必要です。

まとめ

この記事では、NotionのデータベースをGoogleスプレッドシートとAPI連携する手順を解説しました。APIキーの取得、Apps Scriptによるデータ取得、定期実行の設定が主な流れです。この方法を使えば、Notionのデータをスプレッドシートで自由に加工したり、他のデータと組み合わせたりできます。

次のステップとして、取得したデータをQUERY関数でフィルタリングしたり、IMPORTRANGEで他のシートと連携したりする応用もおすすめです。また、Notion APIにはデータベースの更新エンドポイントもあるため、スプレッドシートからNotionにデータを書き戻すことも可能です。ぜひ、ご自身のワークフローに合わせてカスタマイズしてみてください。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。