Duration型を「○d ○h ○m」形式で見やすく表示する方法

Tips
DataTipsデータ型

AppSheetで NOW() - [日付] を使って経過時間を計算すると、Duration 型の値(例:1:23:45 のような形式)が得られます。
しかしこのままだとユーザーには少し分かりにくい表示ですよね。

今回は、以下のように「〇d(日)」「〇h(時間)」「〇m(分)」と、シンプルでわかりやすい形式で表示する方法をご紹介します。


目標とする表示形式

経過時間表示
0:59:5959m
1:04:431h
24:54:431d
50:54:432d

使用するカラム型: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() より複雑な条件分岐が可能)

使用方法:仮想カラムに設定

  1. AppSheetの「仮想カラム」を作成します(名前例:vc経過時間表示
  2. 上記の App Formula を設定
  3. 表示ビュー(DeckやDetail)でこのカラムを表示

使えるシーンの例

  • タスクの経過時間表示
  • レポートの生成からの時間経過
  • 点検・対応までの時間表示
  • サポートのレスポンス時間の可視化

発展編:色付き表示やしきい値でのステータス分岐も可能

この式を応用すれば、以下のような高度なUIも実現可能です

  • 経過時間が24時間以上 → 赤色で表示
  • 1時間未満 → 緑色で表示
  • 一定時間超過時に警告ラベルを表示

まとめ

AppSheetの Duration 表示はそのままだと分かりにくいですが、TOTALHOURS()TOTALMINUTES() を使えば、人にわかりやすい表示へ変換できます。

少しの工夫で、アプリの見やすさ・使いやすさが大きく向上します。
ぜひあなたのアプリにも取り入れてみてください!