GASでスプレッドシートをデータベース化する方法 CRUD操作・活用例・注意点を解説

GASでスプレッドシートをデータベース化する方法 CRUD操作・活用例・注意点を解説

「Googleスプレッドシートをデータベースのように使いたいが、GASの書き方がわからない」「簡易的なデータベースを無料で構築したい」。小規模なデータ管理や業務ツールの構築において、GAS(Google Apps Script)とスプレッドシートの組み合わせに注目する方が増えています。

GASとは、Googleが提供するJavaScriptベースのスクリプト言語で、Googleスプレッドシートをはじめとする各種Googleサービスと連携して動作します。スプレッドシートをデータの保存先(データベース)として使い、GASでデータの読み書き・検索・更新・削除(CRUD操作)を行うことで、簡易的なデータベースシステムを無料で構築できます。

この記事では、GASでスプレッドシートをデータベースとして活用する方法、CRUD操作の基本コード、実務で使える活用例、そしてスプレッドシートをデータベースとして使う際の注意点と限界まで、初心者にもわかりやすく解説します。

確認したいポイント結論詳細
GASでデータベースは作れるか?スプレッドシートをDB化できるスプレッドシートをデータの保存先にして、GASでCRUD操作を行う簡易データベースを無料で構築できます
どんな操作ができるか?データのCRUD操作が可能データの作成(Create)・読み取り(Read)・更新(Update)・削除(Delete)をGASのコードで実行できます
費用はかかるか?Googleアカウントがあれば無料GASとスプレッドシートはGoogleアカウントさえあれば無料で利用できます
どのくらいの規模まで対応できるか?数千行〜1万行程度が目安数万行を超えるとパフォーマンスが低下します。大規模データにはCloud SQLなどの外部DBを検討しましょう

この記事でわかること

・GASとスプレッドシートでデータベースを構築するメリット

・スプレッドシートのDB設計とGASの基本操作

・CRUD操作のコード例(作成・読取・更新・削除)

・実務で使える活用例5選

・スプレッドシートDBの注意点と限界

\ 業務自動化・DX推進のご相談はネクストスケールへ /
▶ 相談予約はこちら
目次

GAS×スプレッドシートでデータベースを作るメリット

専用のデータベースサーバーを使わず、スプレッドシートをデータベースとして活用するメリットを整理します。

GASとスプレッドシートの基本

GAS(Google Apps Script)は、Googleが提供するクラウドベースのスクリプト環境です。JavaScriptをベースにしており、Googleスプレッドシート、Gmail、Googleドライブ、Googleカレンダーなどの各種Googleサービスと連携して動作します。

スプレッドシートをデータベースとして使う場合、スプレッドシートのシートがテーブル、1行目の各列がカラム名、2行目以降の各行がレコードに相当します。GASからSpreadsheetAppクラスを使ってデータの読み書きを行うことで、簡易的なデータベース操作が可能になります。

スプレッドシートDBの5つのメリット

1. 無料で使える:Googleアカウントさえあれば、GASもスプレッドシートも無料で利用できます。サーバー費用やライセンス費用が一切かかりません。

2. 環境構築が不要:ブラウザだけで開発・実行が完結します。データベースサーバーのセットアップやミドルウェアのインストールが不要です。

3. データの可視性が高い:スプレッドシート上でデータを直接確認・編集できるため、エンジニア以外のメンバーもデータの内容を把握しやすいです。

4. Googleサービスとの連携が容易:Gmail、Googleフォーム、Googleカレンダー、Googleドライブとの連携がGASの数行のコードで実現できます。

5. WebアプリやAPIとしても公開可能:GASのウェブアプリ機能を使えば、スプレッドシートのデータをWebアプリケーションのバックエンドとして利用したり、外部からAPIとしてアクセスしたりすることも可能です。

スプレッドシートのデータベース設計と基本操作

スプレッドシートをデータベースとして使うためには、データの構造と基本操作を理解しておく必要があります。

データベース用スプレッドシートの設計ルール

スプレッドシートをデータベースとして活用するためには、以下の設計ルールを守ることが重要です。

1行目はヘッダー行(カラム名)として使用し、ID・名前・メール・登録日時などの列名を記載します。2行目以降にデータを1行1レコードで記録します。各列のデータ型(テキスト・数値・日付)を統一し、空行を作らないようにします。

また、1列目にIDやレコード番号を設けておくと、GASからの検索・更新・削除の際にキーとして使えるため、操作が効率的になります。

GASからスプレッドシートにアクセスする基本コード

GASからスプレッドシートにアクセスするには、SpreadsheetAppクラスを使用します。基本的なアクセスコードは以下のとおりです。

// スプレッドシートとシートの取得

const ss = SpreadsheetApp.getActiveSpreadsheet();

const sheet = ss.getSheetByName(‘データ’);

// 全データの取得

const data = sheet.getDataRange().getValues();

const headers = data[0]; // 1行目がヘッダー

const records = data.slice(1); // 2行目以降がデータ

getActiveSpreadsheetでスプレッドシートを取得し、getSheetByNameでシート名を指定してシートオブジェクトを取得します。getDataRangeはデータが存在する範囲を自動検出し、getValuesで2次元配列としてデータを取得します。

GASの公式リファレンスは、Googleの開発者向けドキュメントで確認できます(参考:Google Apps Script リファレンス)。

\ 業務自動化・DX推進のご相談はネクストスケールへ /
▶ 資料請求はこちら

CRUD操作のコード例

データベースの基本操作であるCRUD(Create・Read・Update・Delete)をGASで実装する方法を、コード例とともに解説します。

Create(データの追加)

新しいレコードをスプレッドシートの最終行に追加する処理です。appendRowメソッドを使います。

function addRecord(name, email) {

  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(‘データ’);

  const id = sheet.getLastRow();

  sheet.appendRow([id, name, email, new Date()]);

}

appendRowは配列をシートの最終行の次の行に追加します。IDはgetLastRowで現在の最終行番号を取得して連番として使用しています。

Read(データの読み取り・検索)

指定した条件でデータを検索し、該当するレコードを返す処理です。

function findByEmail(email) {

  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(‘データ’);

  const data = sheet.getDataRange().getValues();

  const headers = data[0];

  const emailCol = headers.indexOf(‘メール’);

  for (let i = 1; i < data.length; i++) {

    if (data[i][emailCol] === email) return data[i];

  }

  return null;

}

ヘッダー行からカラム名のインデックスを取得し、forループで全行を走査して条件に一致するレコードを返します。

Update(データの更新)

指定したIDのレコードを更新する処理です。

function updateRecord(targetId, newName) {

  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(‘データ’);

  const data = sheet.getDataRange().getValues();

  for (let i = 1; i < data.length; i++) {

    if (data[i][0] === targetId) {

      sheet.getRange(i + 1, 2).setValue(newName);

      return;

    }

  }

}

IDで行を特定し、getRangeとsetValueで該当セルの値を更新します。行番号は配列のインデックス(0始まり)+1でスプレッドシートの行番号(1始まり)に変換します。

Delete(データの削除)

指定したIDのレコード行を削除する処理です。

function deleteRecord(targetId) {

  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(‘データ’);

  const data = sheet.getDataRange().getValues();

  for (let i = data.length – 1; i >= 1; i–) {

    if (data[i][0] === targetId) {

      sheet.deleteRow(i + 1);

      return;

    }

  }

}

deleteRowで行を削除します。削除時はforループを逆順(最終行から先頭方向)に回すことで、行番号のズレによるバグを防ぎます。

GAS×スプレッドシートDBの活用例5選

GASとスプレッドシートの組み合わせは、さまざまな業務シーンで活用できます。代表的な活用例を5つ紹介します。

活用例1:Googleフォーム連携の問い合わせ管理

Googleフォームからの問い合わせデータをスプレッドシートに自動蓄積し、GASで対応状況のステータス管理や自動返信メールの送信を行います。フォームの回答が記録されるたびにGASのトリガーが起動し、担当者への通知や顧客への自動返信を実行できます。

活用例2:簡易CRM(顧客管理)

顧客情報(会社名、担当者、連絡先、対応履歴)をスプレッドシートに一元管理し、GASで検索・フィルタリング機能を実装します。GASのウェブアプリ機能を使えば、ブラウザから操作できる簡易的なCRM画面も構築可能です。

活用例3:在庫管理・備品管理

在庫データや備品リストをスプレッドシートに記録し、GASで入出庫登録・在庫数の自動計算・発注点アラートを実装します。Googleフォームと連携させれば、現場からスマートフォンで入出庫データを入力する仕組みも作れます。

活用例4:WebアプリのバックエンドDB

GASのウェブアプリ機能(doGet/doPost)を使って、スプレッドシートをWebアプリケーションのバックエンドデータベースとして利用できます。HTMLとJavaScriptでフロントエンドを作り、GASのAPIを呼び出してデータの読み書きを行う構成です。小規模な社内ツールやプロトタイプの開発に適しています。

活用例5:外部API連携によるデータ収集・蓄積

GASのUrlFetchAppを使って外部APIからデータを定期的に取得し、スプレッドシートに蓄積する仕組みを構築できます。為替レート、天気情報、SNSのフォロワー数などを定期的に取得して記録し、時系列でのデータ分析に活用できます。

業務効率化のアイデアをより幅広く検討したい方は、業務効率化アイデア55選の記事もあわせてご確認ください。

\ 業務自動化・DX推進のご相談はネクストスケールへ /
▶ 相談予約はこちら

GAS×スプレッドシートDBの注意点と限界

スプレッドシートをデータベースとして使う方法は手軽ですが、制約と限界も理解しておく必要があります。

注意点1:データ量の増加でパフォーマンスが低下する

スプレッドシートの行数が数万行を超えると、GASの処理速度が大幅に低下します。getValuesで全データを取得する処理や、forループでの全行走査が遅くなるため、実用的な上限は数千行〜1万行程度と考えておきましょう。

パフォーマンスを改善するには、データをシートで分割する、不要な列を読み込まないようにgetRangeで範囲を限定する、バッチ処理でAPIの呼び出し回数を減らすといった対策が有効です。

注意点2:GASの実行時間に制限がある

GASには1回の実行につき6分という実行時間の上限があります。大量データの処理やAPI連携で時間がかかる場合は、処理を分割してトリガーで順次実行する設計が必要です。

注意点3:同時編集時のデータ競合に注意

複数のユーザーやトリガーが同時にスプレッドシートに書き込むと、データの上書きや行のズレが発生する可能性があります。LockServiceクラスを使って排他制御を実装するか、同時書き込みが発生しにくい設計にすることで対処します。

注意点4:セキュリティとアクセス権限の管理

スプレッドシートのデータは、共有設定を誤ると意図しない相手にデータが閲覧されるリスクがあります。個人情報や機密データを扱う場合は、スプレッドシートの共有設定を「特定のユーザーのみ」に制限し、GASのウェブアプリ公開時のアクセス権限にも注意してください。

注意点5:規模が拡大したら外部データベースへの移行を検討する

データ量が増加し、同時アクセスが増え、リレーショナルなデータ構造が必要になった場合は、Cloud SQL(MySQL/PostgreSQL)やFirestoreなどの外部データベースへの移行を検討しましょう。GASはJDBC接続でCloud SQLと連携できるため、移行後もGASのコード資産を活かすことが可能です。

システム開発の外注やAI活用については、システム開発の外注とはの記事や、ネクストスケールのAIコンサル・AX伴走支援のサービスもご活用ください。

\ 業務自動化・DX推進のご相談はネクストスケールへ /
▶ 資料請求はこちら

まとめ

GAS(Google Apps Script)とGoogleスプレッドシートを組み合わせれば、無料で簡易的なデータベースを構築できます。データの作成・読み取り・更新・削除(CRUD操作)をGASのコードで実装し、Googleフォームやメールなどの他のGoogleサービスと連携させることで、問い合わせ管理、顧客管理、在庫管理、Webアプリのバックエンドなど、さまざまな業務ツールを構築可能です。

ただし、スプレッドシートをデータベースとして使う場合の実用的な上限は数千行〜1万行程度であり、GASの実行時間制限や同時編集時のデータ競合にも注意が必要です。規模が拡大した場合は、外部データベース(Cloud SQL、Firestoreなど)への移行を検討しましょう。

まずは1つのシートにデータを記録し、GASで読み取るところから始めて、段階的にCRUD操作や外部連携を追加していくアプローチがおすすめです。

AIコンサル・AX伴走支援サービスご紹介資料

社外AI役員サービスご紹介資料
  • サービス資料のページ例:社外AI役員とは
  • サービス資料のページ例:AI活用による企業変革の支援内容

この資料でこんなことがわかります!

  • 社外AI役員とは
  • 支援内容
  • 導入の進め方
  • 導入実績・効果

\3ステップで簡単入力/

この記事の監修者

石丸真平

石丸真平

株式会社ネクストスケール 代表取締役

株式会社ネクストスケールの代表。「AI時代に勝てる企業組織を共に創る」を掲げ、法人向けの生成AI研修とAX(AIによる企業変革)の伴走支援を手がける。経営課題の整理からAI活用領域の設計、ツール選定、業務への組み込み、社内定着、ROI測定までを一気通貫で支援。単なる効率化ではなく、経営戦略としてAIを活かす視点での支援を得意とする。Xでは「本当に仕事で使えるAI」をテーマに、実務で使えるノウハウを発信している。
この記事をシェアする
  • URLをコピーしました!

関連事例

他の成功事例を見る
目次

AI活用を経営成果につなげる
実践ヒントがわかる資料

社外AI役員の支援内容や導入の進め方を、わかりやすくご紹介します。

  1. 資料表紙

必要事項をご入力ください

フォームを読み込んでいます…