GASでDB!スプレッドシートをデータベースとして使う方法【無料・ソースコードコピペOK】

GAS(Google Apps Script)講座

今回は、スプレッドシートをデータベースのように利用する方法をご紹介。

この記事の内容をマスターすればあなたの情報管理能力をアップできるでしょう。

スプレッドシートなんて使ったことないという方でもわかりやすいように手順をステップごとに細かく解説。

また、完成品のスプレッドシートも提供しますので誰でも簡単にスプレッドシートをデータベースとして使い始められます。

ぜひ最後までご覧になってください。

\ゲームで学ぶプログラミング/
独学でプログラミングを学んで開発者に!
Unity入門の森オリジナル本格ゲーム制作講座はこちら
本格ゲームの全ソースコード公開・画像&動画による解説付き

スプレッドシートとデータベースの違い

スプレッドシートとデータベースの主な違いは、以下。

  • スプレッドシート
    スプレッドシートは、表形式でデータを表示し、列と行を使用して構造化します。
    データの取り扱いは比較的柔軟で、数式や関数を使ってデータを操作できます。 通常、小規模なデータセットや計算が必要なデータに適しています。
  • データベース
    データベースは、スプレッドシートに比べてより複雑で構造化された方法でデータを保存します。
    テーブルと呼ばれる形式でデータを保存し、それぞれのテーブルは特定の列とそれに関連するデータ行で構成されます。
    またリレーションという概念でデータ上で重複したデータが発生しないように連携して1つのデータを保管します。

総括すると、スプレッドシートは小規模なデータや単純な計算に適しており、データベースは、データを整理して管理することを得意としています。

Google Apps Scriptを利用すればスプレッドシートをデータベースとして利用可能

データの整理が得意なデータベースですが利用方法は非常に複雑で初心者には手が出ません。

スプレッドシートをデータベースのようなデータの整理に特化したシステムとして扱う方法としてGoogle Apps Scriptを利用する方法があります。

Google Apps Script(GAS)とは

GAS(Google Apps Script)は、Google Workspaceの機能を拡張し、カスタマイズするためのスクリプト言語です。

基本的な使い方や構文を理解することで、スプレッドシートをデータベースのように活用できます。

GASを利用するメリット、特徴は、以下になります。

Googleサービスとの連携が容易

GASは、Googleによって開発されているため他のGoogleサービス(スプレッドシートやGmail、Googleカレンダーなど)との連携が簡単に行えます。

Googleサービスの機能拡張を図りたい方やGoogleサービスを連携したい方にはおすすめの言語です。

コンパイル不要なため即座に変更反映が可能

GASは、スクリプト言語と呼ばれるコンパイルをせずに即時実行、展開ができる言語です。

Javaなどのコンパイル言語では、コンパイルと呼ばれるソースコードをアプリに変換する処理が必要ですがGASでは不要。

気軽に処理をカスタマイズして反映することができます。

定期実行やセキュリティ設定が簡単

GASは、トリガーと呼ばれるスケジュール実行機能を提供しています。

トリガーを利用すれば、定期的に自動実行するように設定できます。GAS画面の「トリガー」設定から簡単にスケジュールを組むことが可能です。

画面上で簡単な設定を行うだけで設定が可能。

また、セキュリティは、権限設定が細かく設けられており指定したユーザーや処理だけ許可するなどの設定が簡単に行えます。

スプレッドシートをデータベース化するために必要な機能

今回、スプレッドシートをデータベースとして利用するために以下の機能を実装します。

データの追加・更新機能

スプレッドシートに新しいデータを追加したり、既存のデータを更新する機能。

シート上に必要項目を入力し登録ボタンを押すことで対応するシートへデータを登録します。

データの自動更新機能

登録されたデータに応じて情報を自動的に更新します。

入力シートに登録されている内容に応じて情報を更新する機能を実装します。

データの検索機能

データベースは、自由にデータを検索して抽出できる必要があります。

今回は、登録されている情報をキーワードにて検索できる機能を実装します。

実践:入出荷管理システムをつくってみよう!

ここからは、サンプルとしてデータベースシステムとして利用するために必要とお伝えした先ほどの機能がすべて搭載されているシステムを開発していきます。

開発するシステムは、商品の入荷、出荷を管理するための入出荷管理アプリ。

機能としては、以下になります。

  • 商品登録機能新商品を商品リストに追加します。商品は、管理をしやすくするために個別に管理番号と商品の種別を登録できます。管理番号は、自動的に連番で登録されます。
  • 入出荷登録機能商品リストに記載されている商品の入荷、出荷情報を登録します。登録情報をもとに商品の在庫数を更新します。また、登録した入出荷情報は、日時を含めて履歴として格納します。これでいつどの商品が何個、入出荷したかが管理できます。
  • 商品照会機能登録されている商品の在庫数を表示します。検索は、商品名で検索が行えます。

事前準備:在庫管理用スプレッドシート作成

在庫管理システムを作成するためのスプレッドシートを作成します。

スプレッドシートの開き方はこちらを参考にしてください。

今回作成するスプレッドシートのシート名とそれぞれのシートデザインは以下。

入出荷登録シート

最大10件まで登録できるようにします。

画像のようなレイアウトで表を作成します。

項目は以下の通りです。

No 商品名 入庫種別 数量

入出荷種別は、プルダウンを利用しましょう。

プルダウンは、セルを右クリック、プルダウンで設定できます。

選択項目は、「入荷」、「出荷」を設定します。

わかりやすいように色を分けておきましょう。

今回は入荷を赤、出荷を青にしています

プルダウンを10までコピーしておきましょう。

登録実行用のボタンは、「挿入」→「図形描画」の順でクリックして図形作成します。

「図形」→「ベベル(面取り)」を選びます。

 

図形をクリックすると文字が入力できるので「登録」と入力します。

シート名は「入出荷登録シート」にしておきましょう。

商品登録シート

商品登録用フォームを画像のようなデザインで作成します。

項目は以下のとおり。

項目 設定内容
商品名
種別

シート名を「商品登録シート」にしておきましょう。

商品照会シート

2行目に検索エリア、5行目以降を検索結果表示エリアとします。

画像のように列名とボタンを設定します。

項目は以下の通り。

検索項目

商品名

リスト項目

管理番号 商品名 種別 数量

シート名は「商品照会シート」にしておきましょう。

履歴シート

履歴表示用の列名を画像の内容にて作成します。

項目は以下。

入出管理番号 管理番号 商品名 登録種別 数量 登録時間

シート名は「履歴シート」にしておきましょう。

在庫管理シート

在庫管理用の列名を画像の内容にて作成します。

項目は以下。

管理番号 商品名 種別 数量

シート名は「在庫管理シート」にしておきましょう。

種別管理シート

種別管理用の列名を画像の内容にて作成します。

今回種別は、固定値とするので事前に『果物』と『野菜』という商品種別を入力しておきます。

項目は以下。

種別番号 種別名
1 野菜
2 果物

シート名は「種別管理シート」にしておきましょう。

GASにて在庫管理システムを開発

ここからは、GASを利用してプログラムを作成していきます。

先程作成したGoogleスプレッドシートにて拡張機能-AppScriptをクリックします。

Google Apps Script画面に切り替わります。

まずは、簡単にAppsScript画面についてご説明します。

1.プロジェクト名

クリックすると変更できます。

2.スクリプトファイル

プロジェクトに配置されているスクリプトファイルを確認できます。

各項目横の+ボタンを押すことでファイルを新規で作成できます。

3.ツールバー

スクリプト作成時に必要な操作ボタンがまとめられています。

保存やデバッグ、実行ログ表示、操作を1つ戻るなど

4.サイドバー

GASの設定や統計情報などを確認する画面に切り替えるためのボタンがまとめられています。

5.エディターエリア

スクリプトファイルの編集を行うエリア

手始めにプロジェクト名を変更してみましょう。

今回は、在庫管理システムスクリプトなので「InventoryControlSystem」に変更しましょう。

プロジェクト名をクリックして名前を変更します。

続いてプログラムを記述していきます。

今回作成するプログラムの完成形は以下になります。

 

この内容をエディタエリアにコピペして、SpreadSheetIdを設定し保存すればすぐに動かす事ができます。

ただしボタンの割当などが必要になります。

ボタンのスクリプト割当は後半に解説します。

初回実行時は「承認が必要です」と出てくるので権限を確認し動くようにしてください。

詳しいやり方はこちら。

ここから各処理事に処理内容を説明していきます。

設定情報箇所

最初にシステムで利用するスプレッドシートの情報を設定、取得しています。

エディタエリアに以下のコードを記入します。

SHEET_IDには、スプレッドシートのIDを記入します。

IDは、スプレッドシートのURLで確認することができます。

スプレッドシートIDの確認場所

スプレッドシートのURL

https://docs.google.com/spreadsheets/d/<スプレッドシートID>/edit

各シートの情報は、以下のようにシート名を指定することでシート情報を取得できます。

商品登録機能

続いて商品の登録機能を実装します。

設定情報エリアの後ろに以下のコードを記述します。

商品登録処理では、入力項目の資材名と種別を取得。

登録したい商品が在庫管理シートにすでに登録済みかの確認と種別管理シートに記載されている種別が設定されているかを確認します。

問題なければ在庫管理シートの末行に商品を追加して管理番号を設定します。

管理番号は、登録済みの商品で一番数値の高い管理番号に1足した値を設定します。

入出荷登録機能

商品の入荷、出荷を登録する処理を実装します。

以下のソースを末行に追加します。

登録処理では、入出荷登録シートに記載の内容を履歴シートへ登録し在庫管理シート上の対象商品の数量を入荷なら加算、出荷なら減算します。

在庫管理シートに存在しない商品が入力されていた場合は、未登録商品であることを伝えます。

照会機能

最後に在庫データを検索して表示する機能を作成します。

以下のコードを末行に追加します。

今回は、簡易的な検索機能として商品名での検索のみ実装しています。

実装には、QUERY関数というスプレッドシートで提供されている関数を利用しています。

QUERY関数は、シートから指定した文字にヒットする情報を取得して別シートに貼り付けることができる関数です。

QUERY関数により、検索条件に一致する行だけを簡単に取り出し、効率的なデータ管理が可能。

商品紹介シートに入力された商品名に一致する商品を在庫管理シートから取得して表示してくれます。

ボタンに関数を設定

最後に作成したプログラムをそれぞれのボタンに設定します。

ボタンへの設定は、以下の手順で行ってください。

ボタンを右クリックして右端に表示されるメニューアイコンを押して「スクリプトを割り当て」を押します。

スクリプトの設定画面が表示されれるので以下の設定をそれぞれのボタンに設定します。

  • 入出荷登録シート「登録ボタン」:ArrivalShipping
  • 商品登録シート「登録ボタン」:ItemRegister
  • 商品照会シート「検索ボタン」:Search_Item

「確定」ボタンを押して完了です。

動作確認

開発した在庫管理システムの動作を確認し、正常に機能することを確認します。

まずは商品を登録してみましょう。

商品登録シートで商品名「りんご」種別「果物」で登録します。

登録が完了したら在庫管理シートにりんごが追加されていれば登録完了です。

同じ手順で商品名「みかん」種別「果物」と商品名「トマト」種別「野菜」も登録しておきましょう。

「すでに登録されています。」と出る場合は、「在庫管理シート」に登録されています。

また登録されていないのにエラーが出る場合は、商品名セルが選択状態になっている可能性があります。

セルの選択を外してから再度登録をしてみましょう。

続いて入出荷の登録をしてましょう。

画像のように入出荷登録シートにて登録商品に対して入出荷の数量を設定します。

「登録」ボタンを押して完了メッセージが表示されたら履歴シートをチェックしてみましょう。

登録した情報が履歴として保管されていることを確認します。

合わせて在庫管理シートに登録されている商品の数量が変化していることを確認します。

登録情報どおりに変更されていれば成功です。

最後に照会機能を使ってみます。

商品照会シートにて商品名を「りんご」で検索して結果が表示されることを確認します。

これで、動作確認は完了です。

まとめ

今回は、スプレッドシートをデータベースのように扱うための方法とお試しとして在庫管理アプリの作成を行いました。

本記事の内容をまとめると以下。

  • データを整理して管理するならデータベースがおすすめ。
  • GASを使えばスプレッドシートをデータベースのように利用することが可能。
  • スプレッドシートをデータベースとして使うには、データの追加・更新・検索などのデータ管理機能が必要。
  • 実践例として、在庫管理システムの開発手順を紹介。

今回ご説明した在庫管理システムは、あくまで最低限の機能しか搭載していないシンプルなシステムです。

このシステムを参考にあなたの目的に合わせた機能を搭載して最適なデータ管理システムを構築してみてください。

\ゲームで学ぶプログラミング/
独学でプログラミングを学んで開発者に!
Unity入門の森オリジナル本格ゲーム制作講座はこちら
本格ゲームの全ソースコード公開・画像&動画による解説付き
タイトルとURLをコピーしました