その他

Notion|開始時間と終了時間からその差分を自動計算する方法【コピペOK】

悩んでいる人
悩んでいる人

notionを使って開始時間と終了時間を入力するだけで、その差分を【H時間m分】形式で自動計算できるようにしたい

この記事で紹介する関数をコピペするだけで、以下のようにnotionで差分の時間の自動計算が可能になります↓↓

私は日頃からnotionで睡眠時間を管理しているのですが、睡眠時間を『起床時間 ー 就寝時間』として計算し手入力しておりました。

これでは流石に面倒くさいと思い、notionのFormuraという関数機能を使って自動計算しようと思っていたのですが、notion標準のFormuraには『○○時間〇〇分』のように時間を計算してくれる関数が存在しないため、関数を自作する必要がありました。

notionのFormuraには、もともとdateBetween()という時間の差分を自動計算する関数が事前に用意されておりますが、こちらの関数だけでは、年、月、週、日、時間、分…などの単一の単位でしか時間を計算できません。

そのため、この記事ではnotionのデータベースプロパティのFormulaを使用し、開始時間と終了時間を入力するだけで、その差分を【H時間m分】形式で自動計算する方法をご紹介いたします。

ぜひ、コピペして睡眠時間や作業時間などの管理にご活用ください。

【H時間m分】形式で差分を自動計算する方法

就寝時間と起床時間を記録して、睡眠時間を自動計算するデータベースを例に解説いたします。

起床時間と就寝時間を入力するプロパティを用意する。

睡眠時間を表示するプロパティを用意して関数を設定する

①:時間部分を計算

format(dateBetween(prop("起床時間"), prop("就寝時間"), "hours")) + "時間"

8時間 = format(dateBetween(prop("起床時間"), prop("就寝時間"), "hours")) + "時間"

②:分部分を計算

format(dateBetween(prop("起床時間"), prop("就寝時間"), "minutes") - dateBetween(prop("起床時間"), prop("就寝時間"), "hours") * 60) + "分"

8時間22分は分に換算すると502分

502 = dateBetween(prop("起床時間"), prop("就寝時間"), "minutes")
22分 = format(502 - dateBetween(prop("起床時間"), prop("就寝時間"), "hours") * 60)+"分"

①+②で完成

①と②を組み合わせた以下の関数を睡眠時間プロパティに貼り付けて完成です。

format(dateBetween(prop("起床時間"), prop("就寝時間"), "hours")) + "時間" + format(dateBetween(prop("起床時間"), prop("就寝時間"), "minutes") - dateBetween(prop("起床時間"), prop("就寝時間"), "hours") * 60) + "分"

就寝時間か起床時間のどちらか空欄であれば睡眠時間を表示させない

ここまででほぼ完成してますが、就寝時間か起床時間が入力されていない時にも、睡眠時間の欄に「時間0分」と表示されてしまいます。

もし気になる方はif分を使って、下記のように空欄の場合には何も表示させないようにすることができます。↓↓

if(or(empty(prop("就寝時間")), empty(prop("就寝時間"))), "", format(dateBetween(prop("起床時間"), prop("就寝時間"), "hours")) + "時間" + format(dateBetween(prop("起床時間"), prop("就寝時間"), "minutes") - dateBetween(prop("起床時間"), prop("就寝時間"), "hours") * 60) + "分")

まとめ

notionのデータベースプロパティのFormulaを使用し、開始時間と終了時間を入力するだけで、その差分を【H時間m分】形式で自動計算する方法をご紹介しました。

もしご自身のnotionで活用されたい際には、ぜひ参考にしてみてください。

  • この記事を書いた人

コウダイ

文系・ノースキル・完全未経験・アラサー・地方住み・残業100時間超えの社畜ホテルマンから都内上場IT企業のフルリモートWebエンジニアに転職した人。

都内上場IT企業に勤務するWebエンジニア5年目|プログラミングスクールのテックキャンプ公式アンバサダー|新卒で手取り18万の地方ホテルマン6年→プログラミングを900時間勉強→転職活動100社以上応募→アラサー未経験から7ヶ月でフルリモートのWebエンジニアに転職し年収100万円UP|33歳2児のパパ|ブログ歴4年→月間6,000PV|エンジニア転職ノウハウ、プログラミング、Web制作、副業での稼ぎ方など、「時間や場所に縛られずに稼ぐ」方法を発信しています。

-その他