AppSheetで NOW() - [日付]
を使って経過時間を計算すると、Duration
型の値(例:1:23:45
のような形式)が得られます。
しかしこのままだとユーザーには少し分かりにくい表示ですよね。
今回は、以下のように「〇d(日)」「〇h(時間)」「〇m(分)」と、シンプルでわかりやすい形式で表示する方法をご紹介します。
目標とする表示形式
経過時間 | 表示 |
---|---|
0:59:59 | 59m |
1:04:43 | 1h |
24:54:43 | 1d |
50:54:43 | 2d |
使用するカラム型:Duration
まず、以下のような Duration 型の仮想カラム(例:vcDuration
)があると仮定します:
[vcDuration] = NOW() - [開始日時]
経過時間を人間にわかりやすい表示に変換する式
この vcDuration
をもとに、日・時間・分のいずれかで表示するための App Formula がこちらです
IFS(
TOTALHOURS([vcDuration]) >= 24, TEXT(FLOOR(TOTALHOURS([vcDuration]) / 24)) & "d",
TOTALHOURS([vcDuration]) >= 1, TEXT(FLOOR(TOTALHOURS([vcDuration]))) & "h",
TRUE, TEXT(FLOOR(TOTALMINUTES([vcDuration]))) & "m"
)
この式の意味を解説
関数 | 内容 |
---|---|
TOTALHOURS(duration) | Duration を数値の「時間」に変換 |
TOTALMINUTES(duration) | Duration を数値の「分」に変換 |
FLOOR() | 小数点以下を切り捨てて整数に |
TEXT() | 数値を文字列化("1d" のようにするため) |
IFS() | 条件分岐(IF() より複雑な条件分岐が可能) |
使用方法:仮想カラムに設定
- AppSheetの「仮想カラム」を作成します(名前例:
vc経過時間表示
) - 上記の App Formula を設定
- 表示ビュー(DeckやDetail)でこのカラムを表示
使えるシーンの例
- タスクの経過時間表示
- レポートの生成からの時間経過
- 点検・対応までの時間表示
- サポートのレスポンス時間の可視化
発展編:色付き表示やしきい値でのステータス分岐も可能
この式を応用すれば、以下のような高度なUIも実現可能です
- 経過時間が24時間以上 → 赤色で表示
- 1時間未満 → 緑色で表示
- 一定時間超過時に警告ラベルを表示
まとめ
AppSheetの Duration 表示はそのままだと分かりにくいですが、TOTALHOURS()
や TOTALMINUTES()
を使えば、人にわかりやすい表示へ変換できます。
少しの工夫で、アプリの見やすさ・使いやすさが大きく向上します。
ぜひあなたのアプリにも取り入れてみてください!