標準機能で週番号を計算してみる
やりたいことはタイトルの通り。よく手帳とかカレンダーに書いてあったりしますね。あ、アールスリーさんの Weekly kintone talk もweek##ってタイトルですね。
そもそもどうして?
昨年9月にキンコミで質問が出ていて、そのときにサクっと考えたんですが・・・
丁度年齢計さんを標準機能でとか、kintone cafeの関数芸人回があった時期でやってみよう!とは思ったのですが、それよりもただ答えを教えて、それを実装してしまうのが良いことだとは思えず、いったんお蔵入りしたんですよね~。というのを年明けて下書きを見つけたので供養するためのnoteなんですわ。
(まぁその時にちゃんと検証できなくてお蔵入りしてたともいう)
作り方の説明
使っているテクニックは?
・日付の数値化 (計算フィールド内でDATE_FORMAT関数を使う)
・余りを求める計算式 (ROUNDDOWN関数の活用)
・あえて途中の計算フィールドを残して、確認がしやすいようにする
くらいです。もちろん標準機能でできますね。
考え方としては『kintoneの基本機能のみで曜日を自動計算する』の延長線上だと思ってます
考え方は?
その週の日曜日を計算する ➡ 7で割ってROUNDDOWNしたものが週番号。
とはいえ、月初の始まる曜日によっては計算がずれるので割る前に6を足す。
くらいの感じです。
年間の週番号も計算してみよう
折角だから、やってみましょう
年の計算で追加されたテクニックは
・分岐が大変そうなIF文を1行ずつ分けて書く(簡単に理解できるように)
・計算の中身をラベルに書く+同じ改行ラベルを色変更してコメントっぽくする
・うるう年の計算をする、適用範囲をIF文でエラーにせずにラベルで説明しちゃう
年の計算の考え方は?
今日が年始から何日目か計算する➡後は月の週番号の計算と同じです
うるう日を考えなければいけなくて、『うるう日がある年の3月以降は+1日する』という計算にしました。
うるう年の計算をもっときちんとやれば、適用範囲を広げることが可能です。
あと適用範囲をラベルで説明しちゃう、っていうのも最近よく使います。プログラム組んでたりするとつい、『エラー処理ちゃんとしないと・・・』って考えちゃうんですが、『注意書きに書いてあるでしょ?』で済むことも結構ありますね。
✨結論✨
なんでも言われたままに実装しちゃえば良いってわけじゃないけど、いろいろ考えてやってみるのは、やっぱり楽しい!!🎉