はじめに
この記事はこちらの記事(【検証】Spreadsheetの新機能、「タイムライン」は私が欲していたガントチャートなのか?)の続きです。
11月2日にGoogleのSpreadsheetに Timeline view なるものが追加されました。これはSpreadsheetに入力されたタスクの一覧をガントチャート風に表示するものです。
前回の記事では一通りの機能を触ってみて感想を書きました。
今回は前回の記事で気づいた問題などをさらに掘り下げてみます。
24時間戦えますか?問題
最近新卒で入社してきた世代にはこのフレーズでピンとくる人が少ないです。
余談はさておきこちらに書いたように、タスクの開始日と所要時間(HH:MM:SS)を指定してカードを描画する場合、タスクは1日24時間進むものとして計算されます(下図のタスク2)。
1日の実働時間が8時間の場合タスクの所要時間が 24:00:00(24時間)
のタスクは3日かかりますが、タイムライン上では1日分の長さのカードになってしまいます。
実は、終了日については設定の注釈に以下のように記載されていますが
終了日はタスクの最終日を表します。期間は、タスクの長さを表す日数(整数値)、または (HH:MM:SS) の形式です。
日数は少数でも指定できます。
例えば上記の例でタスク1は4時間なので、実働8時間の場合は0.5日とします。
同様に24時間のタスクは3になります。
ちゃんとタスク2で3日分確保されていますね。
また、このタスク一覧表では開始日(B列)を =1つ前のタスクの開始日 + 1つ前のタスクの期間
という式で導出し、分かり易いように時間まで表示しています。
実際には午前0時から働きませんが、こうしておいた方がタイムラインに余計な空白ができないので見やすいと思います。
カードの終了日を開始日時からの期間(日数)で入力する場合、小数点を使うことで時間を表現できる
開始日休日問題
先ほどの例では=1つ前のタスクの開始日 + 1つ前のタスクの期間
という計算で求めた開始日と、疑似的な日数の少数でカードを描画しました。
この場合タイムラインの「週末を含める」チェックボックスを外すと土日はタスクが進まないものとしてカードの長さが計算されますが、開始日が休日だった場合はその日はタスクが進むものとして扱われます(下図のタスク2、タスク3)。
そのため、開始日を表計算やカスタム関数などで導出する場合にはこの点に注意しなければなりません。
表計算でいいところまで頑張った残骸を置いていきます(ちょっとバグってます)。素直にGASを書けばよかった。
=IF(DAY(B2)=DAY(B2+C2),B2+C2,WORKDAY(B2,DAY(B2+C2)-DAY(B2),'祝日'!$A:$A)+C2-(DATE(YEAR(B2),MONTH(B2),DAY(B2)+1)-B2))
祝日は休めるのか
ここまでやってふと気になったのですが、祝日をまたぐタスクはどうなるのでしょうか?
週末を含めるチェックを外したときのように良い感じに扱ってくれるのでしょうか?
ワールドワイドなGoogle先生が日本の祝日を考慮しているとは思えないので嫌な予感しかしません。
というわけで最後にこのようなタスク一覧を試してみます。11月23日は勤労感謝の日です。
やはりだめでした。
現状だと、祝日をまたぐタスクの場合期間に下駄をはかせる必要がありそうです。
まとめ
2回にわたってSpreadsheetのタイムラインがどの程度使えそうか検証しました。
シートさえ用意すれば描画してくれるシンプルなところや、これまでのGAS資産を活かせそうなところは良いなと思いました。
一方で休日、祝日周りでは課題も有ることが分かりました。GASなどで頑張れない範囲ではありませんが、使うときにはこの点を踏まえて実装する必要がありそうです。