これは何?
Googleスプレッドシートをデータソースとして、Googleデータポータルでグラフ化を行う。
そこで「時間」を扱う時に 工エエェェ(´д`)ェェエエ工 ってなったのでまとめておく。
やりたいこと
何かの工数管理をしているとします。
D列の「経過時間」列には、「終了時刻 - 開始時刻」( D2に=ArrayFormula(C2:C-B2:B)
)が入っていて、
D列の「表示形式」は「経過時間」になっています。
データの中身は
- タスクAの合計が2時間
- タスクBの合計が3時間
↑これをデータソースとして、データポータルで↓こんなグラフを作りたいとします。
ポイントは「Y軸の単位は時間で表示したい」です。
持続時間(秒) を利用する
データソースと接続する時にフィールドの設定ができると思うのですが 持続時間(秒)
という「それっぽいもの」があるじゃないですか。それに設定してみます。
↓ データポータルで「グラフを追加」で「縦棒グラフ」を追加して、ディメンションとかを設定したところ。何も表示されない。。。(正確には意図していないものが表示されている、か)
実験する
(あれこれ調べたことは省略 → 結果としてそのセルの「値」が何なのか、ってことに行き着いた)
スプレッドシート側の設定
E列: 秒表示
式は=C2-B3
で 表示形式は カスタム数値形式より [s]
にした。(「秒」の表示)
F列: VALUE表示
式は=VALUE(D2)
で、表示形式を「数値」にして、小数点以下をいっぱい表示させてみた。(経過時間のVALUE)
データポータル>フィールドの設定
データソースの編集からフィールドを更新するとこうなる
解決策1: [s]を使う
きたこれ。ただし、Y軸が「秒」なので、これを「時間」に変換してくれるフィールドを追加する。
データソースの編集から、フィールドを追加して、[s]/(60*60)
することで、「秒」を「時間」として表現するフィールドを追加する。[s]/3600
でも同じ。
↓ 期待するものができた!
解決策2: VALUEを使う
[s]でできたからいいのでは?と思うのですが、表示形式はともかくスプレッドシートの内部的にはVALUEで値を持っていると思うので、これを元データとするのが一番安全?なのでは、と思った次第。
図5のように 1:00:00
というのは 0.0416666667
という「値」として管理されている。
ちなみに、下記のように「24時間」を「1」として扱っているようです。
つまり VALUE * 24
で何時間かかったか、がわかる、と。
ということで、VALUE*24
のフィールドを追加します。
↓ できた!
さいごに
...ほんとにこれでいいのかな?もっとうまい方法があるのかもしれない。ぜひ教えてほしい。
これって、「元データ」に手を加えてるんですよね。(スプレッドシートのE,F列は本来要らないハズ) A~D列だけを元データとして、スプレッドシート側の「経過時間」と、データポータル側の「持続時間(秒)」をうまく使えば同じグラフが書けるような気がしてならないのですが、だれか教えて!