スプレッドシートのデータをFirestoreに一括インポートする【GAS・2026年版】

7分で読めるテック
最終更新:

個人開発でフロントエンドを作るとき、APIサーバーを毎回用意するのが面倒なので、スプレッドシートで管理しているデータをそのままFirestoreに流し込む方法を試しました。Google Apps Script(GAS)と FirestoreApp ライブラリを組み合わせると、追加のサーバーなしにスクリプトだけで一括インポートが完結します。

実装コードはGitHubで公開しています。

2026年時点の注意点: 以下で使用している FirestoreApp ライブラリはサードパーティ製で、Google公式ではありません。また、GASのライブラリ追加UIは変わっており、現在は「エディタ左サイドバー → ライブラリ(+ボタン)→ スクリプトID入力」の手順です。

FirestoreAppを使うかAdmin SDKを使うか

GASからFirestoreにアクセスする方法は大きく2つあります。

FirestoreApp(サードパーティ製GASライブラリ)を使う方法は、GASのエディタだけで完結するのが利点です。Node.jsやnpmの準備が不要なので、手元の環境を汚さずにサクッと試せます。一方で、非公式ライブラリなのでメンテナンス状況に依存する点はトレードオフです。

Firebase Admin SDK + Node.jsスクリプトを使う方法は、npmで firebase-admin をインストールしてローカルで実行します。こちらはGoogleが公式にサポートしているSDKで、長期的なプロジェクトや本番データの移行には向いています。データ量が多い場合もNode.jsのほうがメモリ制御がしやすいです。

プロトタイプや個人開発でサクッと動かしたい場合はFirestoreApp、本番運用に近い移行作業にはAdmin SDKが向いています。以下ではFirestoreAppを使った方法を解説します。

実装コード

function setDataToFireStore() {
  var sheet = SpreadsheetApp.openById('<your-spread-sheet-id>').getSheetByName('<your-sheet-name>');
  var certification = fireStoreCertification();
  var firestore = FirestoreApp.getFirestore(certification.email, certification.key, certification.projectId);

  try {
    // ループ範囲はスプレッドシートの実際のデータ行数に合わせて変更してください
    // 例: 2行目からデータが始まり54行目まであるなら i < 55
    for (var i = 2; i < 55; i++) {
      var titleValue = sheet.getRange(i, 1).getValue();
      var newData = { title: titleValue };
      firestore.createDocument('<your-firebase-collection-name>', newData);
    }
  } catch(e) {
    Logger.log(e);
  }
}

function fireStoreCertification() {
  return {
    "email": "<your-service-account>",
    "key": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----",
    "projectId": "<your-project-id>"
  };
}

秘密鍵(private_key)はコードに直書きせず、GAS のプロパティサービス(PropertiesService.getScriptProperties())などを使って安全に管理してください。

ループの終端値(i < 55)は自分のスプレッドシートの行数に合わせてください。ヘッダー行を除いてデータが2〜54行目にあるなら i < 55、100行目まであるなら i < 101 になります。

セットアップ手順

1. Firebaseプロジェクトとサービスアカウントの準備

Firebase Consoleでプロジェクトを作成し、Firestoreデータベースを作成します。「プロジェクトの設定 → サービスアカウント → 新しい秘密鍵の生成」でJSONファイルをダウンロードし、client_emailprivate_keyproject_id の3つをコード内の fireStoreCertification 関数に転記します。

2. GASにFirestoreAppライブラリを追加

Google Apps Scriptエディタを開き、左サイドバーの「ライブラリ」右の「+」をクリックします。以下のスクリプトIDを入力して「検索」→ 最新バージョンを選択 → 「追加」します。識別子はデフォルトの FirestoreApp のままで問題ありません。

1VUSl4b1r1eoNcRWotZM3e87ygkxvXltOgyDZhixqncz9lQ3MjfT1iKFw

3. スプレッドシートIDとシート名を設定

スプレッドシートのURLに含まれる /d//edit の間の文字列がスプレッドシートIDです。openById の引数にこのIDを、getSheetByName の引数にシート名(タブ名)を設定します。

4. 実行

GASエディタから setDataToFireStore 関数を選択して実行します。初回はGoogleアカウントの権限許可ダイアログが表示されるので、許可して進めてください。実行ログは「表示 → ログ」または Logger.log の出力で確認できます。

参考

質問・リクエストを送る

記事についての質問や、取り上げてほしいテーマがあればお気軽にどうぞ。いただいた質問はブログ記事として回答し、Q&Aページで公開することがあります。

このサイトについて

井上 周(Amane Inoue)の個人ブログです。技術・読書・ドラマ・旅・大学生活のことを書いています。