はじめに
以前投稿した[こちら]の記事で汎用的なエクセルツールとして、Pleasanterのテーブルを取得・登録できるものを作ってみました。今回はさらに活用編として、より実践的なツールを作ってみたいと思います。
作るもの
進捗スケジュール管理のためのエクセルを用意して、そこにPleasanterからの情報を読み込ませてみたいと思います。
イメージするのはこんなもの
だれもが一度は目にしたことがあるような進捗表エクセル。予実・進捗の遅れ・作業の完了未完了がみえるもの。そして、イナズマ線をひきたい。
Pleasanterテーブルの用意
データを蓄積するPleasanterを用意します。今回は、テンプレートから”進捗管理”をそのまま使います。
適当にそれっぽいデータを仕込んでおきます。
一応、Pleasanterにもガントチャート機能がありますが、今回はあくまで古き良き馴染みのExcelで実装を進めます。(イナズマ線ひきたい)
実装方針
上記の手作りエクセルシートもいいのですが、イナズマ線を自分で実装するのはしんどい(厳しい)、ということでというところで、Web探してみたらいい感じのアドインがあったので、利用させていただきます。
[こちら]
実行すると以下のような感じで、イナズマ描画用の機能が追加されます。
こちらを利用させていただきます。(ちなみにこのアドイン、すごい高性能)
DL時に添付されていたサンプルExcelがそのまま使えそうなので、これにPleasanterから取得した情報を転記してみます。
開始終了日入力でセルに色をつけてくれます。(この画面はDLしたまんまの状態)
テーブル取得用のシートとマクロを設定
DLしてきたサンプルのExcelブックから不要なシートを削除、テーブル取得用のシートを追加します。参照設定も忘れずに。
[テーブル取得用]と[VBA-JSON]のモジュールをインポート
これでPleasanter接続の準備はOK(のはず)
連携項目の整理
Excelに連携する項目を整理、以下の項目をAPIで取得します。
テーブル取得用シートに項目を設定、情報が取得できました。
データの件数が少ないので抽出条件(6,7行目)は無し。
中間編集
一部、Pleasanterの項目そのままでは使えないものがあるので、「編集シート」を用意して項目を加工します。(①~④)
加工した内容
①ソート
テーブル取得シートから、Sort関数でソートしながら編集シートに転記
'A1セル
=SORT(INDIRECT("テーブル取得!A24:F"&COUNTA(テーブル取得!A:A)+15),{2,1},{1,1})
開始日(2列目)とタイトル(1列目)でソートします。
INDIRECT関数でタスクが増えても対応できるような関数としています。([こちら]を参考)
本当はAPIで取得時にソートすればいいんでしょうけど、ツールに実装してないため。。
②担当者(Owner)
Pleasanterから取得するとユーザIDとなるため、ユーザ名リストを別シートに用意、Lookupで変換します。
'G1セル
=XLOOKUP(INDIRECT("E1:E"&COUNTA(A:A)),ユーザ名!A:A,ユーザ名!B:B,"")
本当はこれもAPIでPleasanterから取得・・したかったけど時間の都合で割愛
③開始日(StartTime)・完了日(CompletionTime)
Pleasanterから取得した形式だとExcelで扱えないので、日付形式に変換
'H1セル
=DATEVALUE(MID(SUBSTITUTE(INDIRECT("B1:B"&COUNTA(A:A)),"-","/"),1,10))
'I1セル
=DATEVALUE(MID(SUBSTITUTE(INDIRECT("C1:C"&COUNTA(A:A)),"-","/"),1,10))
'-'を'/'に置き換え(SUBSTITUTE関数)、年月日まで抜き出し(MID関数)、日付形式に変換(DATEVALUE関数)します。
④進捗率(ProgressRate)
1/100します。
'J1セル
=INDIRECT("D1:D"&COUNTA(A:A))/100
仕上げ
編集シートから描画シートへ転記
Pleasanter項目からの連動は以下の通り
Title→大分類
Owner→担当
StartTime→予定/開始
CompletionTime→予定/終了
ProgressRate→進捗率
→ この時点で、StartTime・CompletionTimeの値から、セルに色が付きました。
アドイン機能で稲妻描画
稲妻線描画ボタンクリック
ProgoressRateの値から、イナズマ線が描画されました。
まとめ
データはPleasanterで共有しつつ、見慣れたExcelで進捗を管理、ということができそうです。
次回はこのExcelをさらに改造して、工数管理を考えてみたいと思います。