2015-06-13

GoogleスプレッドシートとGoogle Apps Scriptを使ったガントチャートスケジューラ作成①

はじめに

先日、開発プロジェクトで長らくスケジュール管理ツールとして使用してきたMicrosoft Projectをライセンスの問題から手放すこととしました。
手放すにあたり、代替のスケジュール管理ツールが必要になり、フリーで使えるスケジュール管理ツールを探していたのですが、どれもしっくりするものが見つからず。

ないなら作ってしまえばよいということで、最初はExcelを使って今まで利用していたスケジュールテンプレートを作成しようとしたのですが、折角作るのであればプロジェクトメンバ全員で共有でき、且つ、各メンバが進捗更新でき、進捗状況の遅延が目視できるようなものにアップグレードしようと思いました。



要件としてはこうなります。


  • フリーで利用できる。(私がスクラッチ開発するのだからフリーは当たり前ですがw)
  • ガントチャート表示できる
  • 管理者とメンバで更新権限を分けることができる
  • スケジュールは共有でき、いつでも参照・更新できる
  • WBSの大項目、中項目を設定でき、タスク名は自由にいじれる
  • 起算日とあらかじめ設定した各タスクの工数に基づき自動スケジューリングが可能
  • 自動スケジューリングの際、日本の休日やカスタム休日を意識して線表作成できる
  • 印刷できる

この要件満たすものは?と考えると共有できるExcelマクロでよいわけだという考えに至りました。
Microsoft Office OnlineがVBAマクロを作成できるのであれば私のスキルからいっても恐らく最善のものが作れたのですが、残念(幸い?)なことに現在のプロジェクトはメール等オフィスツールにGoogle Appsを利用しているのでそれが最適かつ近道です。

さて、前置きが長くなりましたが、
Google Apps Scriptを利用したスケジュール管理ツールの作成
についてこれから数回にわたって記載していきたいと思います。

また開発の中でわかってきた、Google Apps Scriptの特性についても記載していきます。

完成図


作成したツールのイメージ図はこんな感じです。
Googleスプレッドシート ガントチャートスケジューラ


ポイント

GoogleAppsスクリプトはExcelマクロのようなもので言語系がJavascriptって違いがあるだけで基本的な使い方は一緒と思ってました。

これは重大な間違いです。

同じ作り方をしたのでは全く速度が出ません。

大きく違うのは、データアクセス系の命令は全てサーバへのAPIコールとなるということです。

なので、シート等からのデータ取得や編集後のデータ更新は、一括でできるものは極力一度で済ませるというのが基本スタンスとなります。


  • データ取得 → 参照や更新する可能性のあるセルを範囲指定で配列で取得
  • データ編集 → 範囲取得した配列に対して編集する
  • データ更新 → すべて編集し終わったら一気に反映


こうすることで(運用に耐える)高速なアプリとなります。


次回は、メイン処理をコーディングする前に必要なライブラリを作成していきます。