AppSheet実践編シリーズ㉕~AppSheetで本格的な採番要件にチャレンジしてみた(前編)~
はじめに
こんにちは。ソシオネットの髭晩酌です。久しぶりの投稿です。
今年のプロ野球もセパ両方優勝チームが決まりました(ブログ執筆は10月上旬)。推しのチームがクライマックスシリーズに進出したのでチケットの抽選に応募したのですが、抽選に外れて少しがっかりしながらブログ書いています。
※ってか、このブログ投稿時には多分クライマックスシリーズ終わってる気がする。。
まあ球場に行っても、観戦はそこそこにビールばっかり飲んでいるだけの不良ファンですが。。
さて、今回のテーマは「採番」です。
弊社は毎月AppSheetのオンライン無料勉強会を実施しているのですが、そこにご参加いただいた方から「AppSheetで請求書番号などの採番をするには?」と、ご質問いただいたのがきっかけです。
確かに、AppSheetで一番シンプルに採番しようとするならば、INITIAL VALUE欄で以下のようにmax()関数を使うことにより当該項目に存在する最大値+1の値を取ることはできます。
max(テーブル名[項目名])+1
が、採番のヘッダ文字列が変わったらまた連番を1から始めたい場合などは、単純なmax()関数ではうまくいきません。ということで今回は、そのような要件でも対応できる採番の仕組みをAppSheetで実現してみようと思います。
採番の要件
今回作るアプリで実現したい採番の要件は以下の通りです。請求書番号を採番する想定でお読みください。
採番体系は「I_[請求月の末日]_[連番3桁]」(例:I_20240831_001)。請求月が替わったら連番部分はまた1から始まる。
翌月になってから前月分の請求書を発行する場合もある。例えば、9月に入ってから8月分の請求書を発行することもあり得る。よって、発行した当日が含まれる月=請求月、とは必ずしもならない。
実はこれ、弊社の請求書の採番ルールです。なので、弊社とお付き合いのある方は見慣れた採番体系かもしれません笑。
作成するサンプルアプリの紹介
ということで、今回は前述の要件を満たす請求書番号を採番するアプリを作ります。主だった処理の概要図を以下に記します。
①採番テーブルから、採番ヘッダと連番を取得して請求書番号を生成
②請求書テーブルに保存
③採番テーブルの連番に1を加える
また、完成したアプリの画面イメージは以下の通りです。なお、採番したいだけのアプリなので、請求書の内容については「請求書テキスト」という欄が1つあるだけとしています。
さてここから早速アプリを作っていきますが、今回作るアプリはいつもの弊社でブログでご紹介しているアプリよりちょっと設定の手数が多いので、先に開発の流れを書いておきます。
データの取り込み
Data設定
View設定
採番テーブルから請求書番号を採番する
採番したら採番テーブルに1を加算する
採番ヘッダ欄は新規作成時にだけ表示する
請求書番号を重複させないために
ということで、上記の手順に沿って早速アプリを作っていきましょう!
なお、本ブログの画面説明は「improved editor」モードにて説明していきます。
早速アプリを作ってみよう
データの取り込み
まずは以下の2つのテーブルを持つExcelやスプレッドシートをご用意いただき、それをAppSheetに取り込みます。
AppSheetのトップ画面>Create>App>Start with existing dataからファイルを読み込むと片方のテーブルがAppSheetに取り込まれるので、その後、Dataメニューの中のAdd new Dataボタンからもう1つのテーブルを取り込んでください。
なお、採番テーブルには最初から2か月分の採番ヘッダを入れています。
またid列の文字列は、以下のブログに書いたやり方でUNIQUEID()と同じデータをExcelで作ったものを入れています。
Data設定
今度はDataメニューの設定です。AppSheet画面の左側のDataメニューから2つのテーブルに対して以下の通りに設定していきます。
「★後述」となっている部分はこの後個別に説明をしていきます。
請求書テーブルの請求書番号は、前述の完成イメージにある通り、採番後に手でユーザに変更させたくないため、EDITABLE?のチェックを外しています。この時点で特筆すべき点はこれくらいです。
では、ここまで設定したら早速2つのテーブルをRefで結合していきましょう。請求書テーブルの採番idについて、以下の図の通りに詳細設定を行います。
これで、新規登録画面で採番テーブルから取得した採番ヘッダを選択することができるようになりました。
Dataの設定のうち、基本的な部分についてはこれで完了となります。
View設定
ここからはViewメニューから画面の設定をしていきます。今回のブログの本質とは関係ないので、簡単な設定のみにします。
まずは請求書ビューの設定です。以下の通り、View typeを「table」に変更するのと、Column orderで表示したい項目(「請求書番号」と「請求書テキスト」)だけを残すくらいと思います。
次に採番ビューですが、今回は作成しないのでビュー自体を削除してしまいましょう。
※もちろん、実際の運用上には採番マスタのメンテナンス画面も必要と思われますが、今回のブログとは無関係なので端折ります。。
ということで、簡単ですがViewの設定は以上となります。
採番テーブルから請求書番号を採番する
さてここからが本番です。ここでは「選択した採番ヘッダ」と「それに対応する連番」を文字列結合して請求書番号を生成します。前述の絵の①の処理です。
早速ですが、Dataメニュー>請求書>請求書番号>Initial Value に以下の関数を設定してください。
[採番id].[採番ヘッダ] & RIGHT("000" & [採番id].[連番], 3)
この関数の意味は、「採番ヘッダ」と「連番の左側にゼロ3桁を結合した文字列の右から3桁」を文字列結合する、という意味です。
これにより、選択した採番ヘッダとそれに対応する連番を元にして、請求書番号を生成することができました。前述の通り、EDITABLE?をOFFにしているので、手で修正できない状態になっています!
請求書番号の採番については以上です。簡単ですね!
採番したら採番テーブルに1を加算する
前項で請求書番号を採番しましたが、今のままだと採番テーブルの連番が変わらないため、毎回同じ請求書番号が生成されてしまいます。これだと採番の要件を満たしてないですよね?
ということで、請求書番号を生成して請求書テーブルに保存したタイミングで採番テーブルの連番に1を加算する処理を作成します。前述の絵の③の処理です。
と、これから何を実装するかを書きましたが、ちょっと長くなったので前編はここまで!
終わりに
本ブログでは、採番のヘッダ文字列が変わったらまた連番を1から始めたい場合などは、単純なmax()関数ではうまくいかない採番要件に対して、AppSheetで採番アプリを作成しようとしています。
が、ちょっと長くなったので、後編に続きます!
ということで、今回のブログは以上となります。ではまた次回ブログでお会いしましょう!ルネッサーンス!!
AppSheet勉強会を開催しております
弊社主催のAppSheet勉強会を毎月開催しております。直近開催分のお申込みは以下からお願いいたします。
11/12(火)【毎月第2火曜開催】AppSheetを知ろう!初心者向けかんたんハンズオン勉強会! | Peatix
11/19(火)【毎月第3火曜開催】実践的なスキルが学べる!AppSheetアプリ開発ワークショップ | Peatix
IT内製化支援、Salesforceの運用・導入、DX化推進に関するご相談をお待ちしております
弊社では、ノーコード開発ツールを用いたIT内製化支援、Salesforceの運用・導入、および、DX化推進に関するご相談を承っております。お気軽に弊社お問い合わせサイトよりご相談などをお寄せいただければと思います。
ソシオネットHP:http://www.socionet.co.jp/
対話型定額制アプリ開発サービス「DXデビュー」:https://socionet.co.jp/dxdebut/
IT内製化支援支援サービス「DXオープンラボ」:https://socionet.co.jp/insourcing-support-service/
IT運用とDX化のワンストップサポートサービス「DXサポーターズ」:https://socionet.co.jp/dx-supporters/