【基本編】まずは動くものを!AppSheetで作る小口現金管理アプリ

AppSheet

日々の業務、本当にお疲れ様です。
当ブログ「クロウル」を運営している、藤井貴司です。

「この繰り返し作業、もっと楽にならないかな…」

このブログでは、そんなあなたの悩みを解決するための、業務改善のヒントを発信しています。

今回のテーマは「小口現金管理」です。

「スプレッドシートでの小口現金管理、そろそろ限界かも…」
「入力ミスや報告の手間が多い…」
「スマホからサッと登録できたら便利なのに…」

この記事では、そんな悩みを解決するために、Googleのノーコードツール「AppSheet」を使って、本格的な「小口現金管理アプリ」をプログラミングなしで自作する方法を解説します!

今回は【基本編】として、まずは一人でも使える、基本的な機能を持ったアプリを完成させることを目指します。
この記事を読み終える頃には、あなただけの業務アプリがその手の中で動き出しているはずです。

そもそもAppSheetって何?

「AppSheet(アップシート)」は、Googleが提供するノーコード開発プラットフォームです。
一言でいうと、プログラミングの知識がなくても、本格的な業務アプリを自作できるツールです。

普段使っているGoogleスプレッドシートのデータを元に、スマホやタブレット、PCで動くアプリを自動で作成してくれます。

  • データはスプレッドシートにあるので、万が一の時も安心!
  • ビジネスに適した実用的な見た目にカスタマイズ可能!
  • Googleアカウントさえあれば、すぐに無料で始められる!

この記事では、そんなAppSheetを使って、日々の面倒な小口現金管理を効率化するアプリを一緒に作っていきます。

それでは、さっそく始めましょう!

【第1章】アプリの設計図を作ろう!〜データ構造の決定〜

良いアプリを作る秘訣は、その土台となる「データの設計図」を最初にしっかり作ることです。
ここがしっかりしていれば、後々の機能追加もスムーズに進みます。

STEP 1: Googleスプレッドシートを準備する

まずは、アプリのデータベースとなる、新しいGoogleスプレッドシートを1つ作成しましょう。
ファイル名は「小口現金管理アプリ」など、分かりやすい名前を付けてください。

STEP 2: 7つのシートを作成する

次に、作成したスプレッドシートの中に、以下の7つのシートを作成し、各シートの1行目に、表のとおりの項目名(ヘッダー)を入力してください。

1. 「入出金伝票」シート

A1セルB1セルC1セルD1セルE1セルF1セルG1セル
入出金伝票ID日付伝票タイプ支店ID相手先合計金額備考

2. 「入出金伝票明細」シート

A1セルB1セルC1セルD1セルE1セル
入出金伝票明細ID入出金伝票ID勘定科目ID金額摘要

3. 「添付ファイル」シート

A1セルB1セルC1セル
添付ファイルID入出金伝票IDファイル

4. 「金種表」シート

A1セルB1セルC1セルD1セルE1セルF1セルG1セルH1セルI1セルJ1セルK1セルL1セルM1セルN1セルO1セル
金種表ID確認日支店ID1万円5千円1千円500円100円50円10円5円1円現金有高帳簿残高過不足

5. 「支店マスタ」シート

A1セルB1セル
支店ID支店名

6. 「勘定科目マスタ」シート

A1セルB1セル
勘定科目ID勘定科目名

7. 「ユーザーマスタ」シート

A1セルB1セルC1セルD1セルE1セル
ユーザーIDメールアドレス氏名権限支店ID

今は各シートとも、2行目以降にデータを入れなくても大丈夫です。

【第2章】アプリの骨格を組み立てる!〜AppSheetの基本設定〜

設計図が完成したので、AppSheetにこの設計図を読み込ませ、アプリの骨格を組み立てていきましょう。

STEP 3: AppSheetでアプリを新規作成し、7つのテーブルを読み込む

  1. AppSheet公式サイトにアクセスし、Googleアカウント(第1章と同じアカウント)でログインします。
  2. [Create] → [App] → [Start with existing data] の順にクリック。
  3. App nameに「小口現金管理アプリ」、Categoryは何も選ばずに、[Choose your data] から先ほど作成したスプレッドシートを選択します。
  4. アプリの編集画面が開いたら、左メニューの[Data](データベースアイコン)をクリックします。
  5. [+ Add new Data] をクリックし、まだ追加されていない残りのシートをすべて選択して、アプリに読み込みます。最終的に7つのテーブルがすべて表示されていればOKです。

STEP 4: カラム(列)の型設定を行う

ここが最も重要だけど、面倒で面白くない設定です!
AppSheetに「この列には何が入るのか」を正しく教えていきます。
[Data]メニューで各テーブルを選択し、以下の表の通りにカラムの設定を変更してください。

1. 入出金伝票 テーブル

カラム名TYPEKEY?LABEL?その他の重要な設定
入出金伝票IDTextInitial value: UNIQUEID()
日付Date
伝票タイプEnumValues: 入金, 出金
Display mode: Buttons
支店IDRefSource table: 支店マスタ
相手先Text
合計金額PriceFormula: SUM([Related 入出金伝票明細s][金額])
Currency symbol: ¥
Decimal digits: 0
備考LongText

合計金額のFormulaを入力するとエラーが発生すると思いますが、この後の「2. 入出金伝票明細 テーブル」を設定した後にSaveし直すと解消されるので、今はそのままにしておいてください。

2. 入出金伝票明細 テーブル

カラム名TYPEKEY?LABEL?その他の重要な設定
入出金伝票明細IDTextInitial value: UNIQUEID()
入出金伝票IDRefSource table: 入出金伝票
Is a part of?:
勘定科目IDRefSource table: 勘定科目マスタ
金額PriceCurrency symbol: ¥
Decimal digits: 0
摘要LongText

作成後に「入出金伝票テーブル」に戻り、「Related 入出金伝票明細s」が自動で作成されていることが確認できたら、Saveしてください。
エラーが解消されるはずです。

3. 添付ファイル テーブル

カラム名TYPEKEY?LABEL?その他の重要な設定
添付ファイルIDTextInitial value: UNIQUEID()
入出金伝票IDRefSource table: 入出金伝票
Is a part of?:
ファイルFile

4. 金種表 テーブル

カラム名TYPEKEY?LABEL?その他の重要な設定
金種表IDTextInitial value: UNIQUEID()
確認日Date
支店IDRefSource table: 支店マスタ
1万円1円Number
現金有高過不足PriceCurrency symbol: ¥
Decimal digits: 0

5. 支店マスタ テーブル

カラム名TYPEKEY?KABEL?その他の重要な設定
支店IDTextInitial value: UNIQUEID()
支店名Text

6. 勘定科目マスタ テーブル

カラム名TYPEKEY?LABEL?その他の重要な設定
勘定科目IDTextInitial value: UNIQUEID()
勘定科目名Text

7. ユーザーマスタ テーブル

カラム名TYPEKEY?LABEL?その他の重要な設定
ユーザーIDTextInitial value: UNIQUEID()
メールアドレスEmail
氏名Text
権限EnumValues: 支店担当, 本部経理
Display mode: Buttons
支店IDRefSource table: 支店マスタ

お疲れさまでした!
面倒で面白くない設定はこれで終わりです。

STEP 5: テーブル間の関係(リレーション)を定義する

STEP 4の設定を保存すると、入出金伝票テーブルの中に、AppSheetがRelated 入出金伝票明細sRelated 添付ファイルsという仮想カラムを自動で作ってくれます。

このままだと英語で分かりにくいので、表示名を日本語に変えておきましょう。

  1. [Data] > 入出金伝票テーブルのカラム設定を開きます。
  2. Related 入出金伝票明細s」の鉛筆アイコンをクリックし、[Display name]に「伝票明細、[Description]に「「New」ボタンで勘定科目ごとの明細を追加します。」と入力します。
  3. 同様に、「Related 添付ファイルs」の[Display name]に「添付ファイル、[Description]に「「New」ボタンでレシート等を追加します。」と入力します。
  4. 忘れずに[Save]しましょう。

【第3章】入力機能をマスターする!〜使いやすいフォームの作成〜

骨格ができたので、次はユーザーが直感的に操作できる「見た目」と「入力フォーム」を作っていきます。

STEP 6: 「入出金伝票フォーム」を作成する

  1. 左メニューの[Views](スマホ画面アイコン)を開きます。
  2. [Primary Navigation]入出金伝票をクリックし、View(一覧画面)を以下のように設定します。
    • View type: Deck
    • Position: first
    • Primary header: 相手先
    • Secondary header: 合計金額
    • Summary column: 日付
  3. [System Generated]の中にある[入出金伝票_Form]をクリックし、入力フォームの編集画面を開きます。
  4. [Column order][Manual]をクリックし、以下の順番になるように項目を並べ替えます。(IDは非表示でOK)
    1. 日付
    2. 伝票タイプ
    3. 支店ID
    4. 相手先
    5. 備考
    6. Related 入出金伝票明細s
    7. Related 添付ファイルs
    8. 合計金額

STEP 7: 「金種表フォーム」を作成する

  1. [Views]メニュー → [Primary Navigation][+ Add View] → [Create a new view]をクリックし、新しいViewを作成します。
  2. 一覧画面を以下のように設定します。
    • View name: 金種表
    • For this data: 金種表
    • View type: deck
    • Position: middle
    • Primary header: 確認日
    • Secondary header: 現金有高
    • Summary column: 過不足
  3. [System Generated]の中にある[金種表_Form]をクリックし、入力フォームの編集画面を開きます。
  4. [Column order][Manual]をクリックし、以下の順番になるように項目を並べ替えます。(IDと計算項目は非表示でOK)
    1. 確認日
    2. 支店ID
    3. 1万円 ~ 1円 (順番に並べる)

STEP 8: 「マスタ管理フォーム」3種の作成

本部経理が使うマスタ管理フォームは、普段は隠しておきたいので、ハンバーガーメニュー(三本線メニュー)の中に作成します。

  1. [Views]メニュー [Menu Navigation][+ Add View] → [Create a new view]をクリック
  2. 支店マスタの管理画面を以下のように設定します。
    • View name: 支店管理
    • For this data: 支店マスタ
    • View type: Table
    • Position: menu
  3. 同様の手順で、勘定科目管理ユーザー管理のViewも作成してください。

【第4章】アプリの心臓部!自動計算機能を実装する

ここからは、アプリに「魂」を吹き込む作業です。
ユーザーの手間を減らすための、自動計算機能を実装していきましょう。

STEP 9: 金種表の金額を自動計算する

金種表に入力された枚数から、「現金有高」「帳簿残高」「過不足」を全自動で計算させます。

準備:計算用の仮想カラムを作成する

まず、帳簿残高を正しく計算するために、各明細の金額がプラス(入金)かマイナス(出金)かを判断する、計算専用の仮想カラムを入出金伝票明細テーブルに作ります。

  1. [Data]入出金伝票明細テーブルのカラム設定を開きます。
  2. [Add Virtual column]をクリックします。
    • Column name: 計算用金額
    • App formula: IF([入出金伝票ID].[伝票タイプ] = "出金", [金額] * -1, [金額])
    • TypePriceDecimal digits0に設定します。

金種表に3つの自動計算式を設定する

  1. [Data]金種表テーブルのカラム設定を開きます。
  2. 以下の3つのカラムの[Formula]に、それぞれ数式を設定します。
    • 現金有高のFormula: ([1万円] * 10000) + ([5千円] * 5000) + ([1千円] * 1000) + ([500円] * 500) + ([100円] * 100) + ([50円] * 50) + ([10円] * 10) + ([5円] * 5) + ([1円] * 1)
    • 帳簿残高のFormula: SUM(SELECT(入出金伝票明細[計算用金額], AND([入出金伝票ID].[支店ID] = [_THISROW].[支店ID], [入出金伝票ID].[日付] <= [_THISROW].[確認日])))
    • 過不足のFormula: [現金有高] - [帳簿残高]

STEP 10: 必須項目(入力漏れ防止)の設定

データの品質を保つため、入力漏れを防ぐ設定をします。

  1. [Data]入出金伝票テーブルを開き、以下のカラムの[Require?]にチェックを入れます。
    • 日付
    • 伝票タイプ
    • 支店ID
  2. 入出金伝票明細テーブルを開き、以下のカラムの[Require?]にチェックを入れます。
    • 金額

💡ポイント 勘定科目IDを必須にしないことで、「科目が分からないものは、後から本部経理が入力する」という柔軟な運用が可能になります。

【まとめ】基本アプリの完成!

お疲れ様でした!

以上で、基本的な機能を持った「小口現金管理アプリ」が完成しました!

まずはこの状態で実際にデータを入力し、その便利さを体感してみてください。

入力していると「この項目は表示する必要がないな」とか「これはこうなったら便利だな」とか、いろいろ出てくると思います。

ある程度のことは今回の記事を見ながらで実現できると思うので、ぜひいろいろやってみてください。

次の【応用編】の記事では、僕が入力しながら感じた「これがあると便利だな」を実現させたいと思います。

  • 見やすい月次レポートのダッシュボード
  • 複数人で安全に使うためのアクセス制限機能
  • 入力の手間をさらに削減する便利な入力補助機能

といった、より高度で実践的な機能を実装していきます。

ぜひ、次のステップに進み、このアプリを「本格的な業務アプリ」へと一緒に育て上げていきましょう!