見出し画像

kintoneでカレンダーテーブルを作りたい

kintoneで色々処理をしていると、やはりカレンダーテーブルが必要だと思うことがありまして。
特別にカレンダー用アプリを作成することなくカレンダーテーブルを作成する方法を考えてみました。

※これはkintoneに関する記事ですが、本来のカレンダーテーブルの「テーブル」とkintoneの「テーブル」とは違う概念です。


カレンダーテーブルとは


「正しい」カレンダーテーブル

カレンダーテーブルを簡単に説明すると、連続した日付の列があり年月や会計年度などの階層を持ったテーブルのこと、だそうです。

マイクロソフト公式Docsに「正しいカレンダーテーブル」ということについての記述があります。

・"日付列"と呼ばれる日付データ型の列がある
・日付列には一意の値が含まれる
・日付列に空白を含めない
・日付列に欠落した日付がない
・日付列は年間全体にわたっている

簡単に書きましたがこの要件を満たしたものが「正しいカレンダーテーブル」と呼ばれるようです。

ですが今回私が必要としているのは任意の期間であって年間全体ではないため、正しいものではなく「なんちゃってカレンダーテーブル」になってしまうのですが、そこは大目に見ていただきたいです(笑)


カレンダーテーブルが必要になった理由

例えばkintoneで勤怠管理をしていて、打刻データから出勤簿を作成しようとすると、当然打刻していない日のデータは出てきません。

打刻データアプリ
出勤簿アプリ

やはりこういう管理をする場合には、締め期間内の一か月分の日付を表示させたい。

そんなことでカレンダーテーブルの必要性を感じた、というわけです。


kintoneでできるのか


もともとkrewDataで打刻データから出勤簿にしていたので、
別のフローでカレンダーテーブルを作成して最終的にフローを結合すれば完全なものができるのでは、とぼんやり考えていました。

・・・と思っていたのですが

Power BIやPower Queryだとカレンダーを作成する関数がありますが、それ以外の何かプログラミングでカレンダーを作成しようと思うと、日数分ループ処理をして作成のが一般的(?)なのかなと思います。
(正式な方法があるのに知らないだけならすいません)

ですが、krewDataではループ処理ができません。
変数やループのコマンドがないのでループ処理ができませんでした。

krewDataではカレンダーを作成できないのか・・・
早速出鼻を挫かれることになってしまいました。

・・・と思っていた矢先

やはり無理なのかなと思いながら娘の寝かしつけをしていた時、アイデアが降りてきたのです。

あるExcel関数とあるkrewDataのコマンドを使うと擬似的なループ処理ができるのではないかと思い早速試してみました。


というわけでやってみます


①出勤簿作成とは別ルートで「年月度」フィールドだけ選択

②「2023年01月」から給与計算期間の開始日と終了日をデータ編集コマンドから算出

③ここからが「擬似ループ処理フロー」

連続した日付分のレコードを作成するのであればこれだけのコマンドで可能でした!

④曜日のフィールドも追加して、カレンダーの作成が完了

⑤出勤簿を作成するフローと結合し、完全な出勤簿の作成が完了


まとめ


というわけで、krewDataでのループ処理を試してみました。

具体的な方法は出し惜しみして申し訳ありませんが、全く難しいものではありませんので興味のある方は是非お試しください。

これ以外にまだ用途は思いついていませんが、上手く応用すればまた一つ便利なことができるかもしれません。

やはりkrewData、ネ申ですな!

いいなと思ったら応援しよう!