NotionデータベースをGoogle スプレッドシートに移行する方法【完全ガイド】

NotionデータベースをGoogle スプレッドシートに移行する方法

NotionのデータベースはCSVエクスポートを使えばGoogle スプレッドシートに移行できます。この記事では、手動でエクスポートする基本的な方法から、APIを使った自動移行まで解説します。

そもそも何が移行できて、何が移行できないのか

まずは移行前に把握しておくべきことを整理します。

移行できるもの

  • テキスト、数値、日付、セレクト項目などのプロパティ
  • 各ページのタイトルと本文(テキスト部分)

移行できないもの・崩れるもの

  • 添付ファイル・画像(リンクが切れる)
  • リレーション・ロールアップ(単純なテキストに変換される)
  • チェックボックスの状態(”Yes/No”のテキストになる)
  • Notionのページ内ブロック構造(書式が崩れる)

これらを踏まえた上で、移行方法を選びましょう。

方法①:CSVエクスポート(手動・一番かんたん)

初めて移行する方にはこの方法が一番確実です。

手順

  1. Notionでエクスポートしたいデータベースを開く
  2. 画面右上の「…(三点メニュー)」をクリック
  3. 「エクスポート」を選択
  4. 形式を「CSV」に設定してエクスポート
  5. ダウンロードされたCSVファイルをGoogle スプレッドシートで開く
    • Googleドライブにアップロード→右クリック→「アプリで開く」→「Google スプレッドシート」

注意点

  • サブページがある場合、それぞれ別のCSVファイルとして出力される
  • 日本語の文字化けが起きることがある。その場合は、スプレッドシートの「ファイル→インポート」から文字コードをUTF-8に指定して読み込む

方法②:Notion API + Google Apps Script(自動化・中〜上級者向け)

定期的に同期したい場合や、データが頻繁に更新される場合はAPIを使った方法が向いています。

必要なもの

  • NotionのAPIキー(Integration Token)
  • 移行先のGoogleスプレッドシートのID
  • Google Apps Script(GAS)の基本操作

大まかな流れ

  1. Notion側の準備
    • notion.so/my-integrations からインテグレーションを作成しAPIキーを取得
    • 対象データベースの「接続」にそのインテグレーションを追加する
    • データベースのURLからデータベースIDを取得(URLの英数字部分)
  2. Google Apps Scriptでスクリプトを作成

Googleスプレッドシートを開き、「拡張機能→Apps Script」からスクリプトを作成します。

javascript

function syncFromNotion() {
  const NOTION_TOKEN = "secret_xxxxxxxxxx"; // 自分のAPIキーに変更
  const DATABASE_ID = "xxxxxxxxxx";         // 自分のデータベースIDに変更
  const SHEET_NAME = "Sheet1";

  const url = `https://api.notion.com/v1/databases/${DATABASE_ID}/query`;

  const response = UrlFetchApp.fetch(url, {
    method: "post",
    headers: {
      "Authorization": `Bearer ${NOTION_TOKEN}`,
      "Notion-Version": "2022-06-28",
      "Content-Type": "application/json"
    },
    payload: JSON.stringify({})
  });

  const data = JSON.parse(response.getContentText());
  const results = data.results;

  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(SHEET_NAME);
  sheet.clearContents();

  // ヘッダー行を書き込む(項目名は自分のDBに合わせて変更)
  sheet.appendRow(["タイトル", "ステータス", "日付"]);

  results.forEach(page => {
    const title = page.properties["名前"]?.title?.[0]?.plain_text || "";
    const status = page.properties["ステータス"]?.select?.name || "";
    const date = page.properties["日付"]?.date?.start || "";
    sheet.appendRow([title, status, date]);
  });
}
  1. トリガーを設定して定期同期
    • Apps Scriptの「トリガー」から、syncFromNotion を毎日・毎時など好きなタイミングで実行するよう設定できる

このアプローチのメリット

  • Notionのデータが更新されるたびに自動でスプレッドシートに反映できる
  • 取得する項目や整形ロジックを自由にカスタマイズできる

方法③:Zapier / Make(ノーコード自動化)

コードを書きたくないけど自動化はしたい、という方向けの選択肢もあります。

ZapierやMake(旧Integromat)を使うと、「Notionにレコードが追加されたら → Googleスプレッドシートの行に追加」というフローをGUI操作だけで作れます。

メリット:コード不要で自動化できる
デメリット:無料プランは操作回数に上限あり。データ量が増えると有料プランが必要になる


どの方法を選ぶべきか

状況おすすめの方法
一度だけ移行したいCSVエクスポート
定期的に同期したい・無料で済ませたいNotion API + GAS
コードは書きたくないが自動化したいZapier / Make

まとめ

NotionのデータベースはCSVエクスポートを使えば誰でも簡単にGoogle スプレッドシートへ移行できます。一方で、添付ファイルやリレーションは移行できないため、あらかじめ確認しておくことが重要です。自動化が必要な場合はNotion APIとGoogle Apps Scriptの組み合わせが無料かつ柔軟でおすすめです。

逆のGoogleスプレッドシートからNorionへの移行はこちらです。

あわせて読みたい
Google スプレッドシートのデータをNotionデータベースに移行する方法【完全ガイド】 Google スプレッドシートのデータはCSVインポートを使えばNotionに移行できます。この記事では、手動でインポートする基本的な方法から、APIを使った自動移行まで解説し...
よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

1995年から30年以上、企業のWebサイト運営を支援してきました。
現在は「無茶楽(MUCHARaku)」を通じて、AIや最新のツールを活用し、より効率的で楽しいサイト改善をお手伝いしています。