Google Apps Scriptでガントチャヌトを䜜る【GAS】

䞻にシステム関係者や建蚭関係者の間でよく䜿われおる工皋管理の為のチャヌトに「ガントチャヌト」。ただ単玔にタむムラむンを衚瀺しおるわけではなく、タスクずタスクの関係性を意識しお䜜られおるこのチャヌトですが、頭の䞭でだけでごちゃごちゃずスケゞュヌル確認やタスク管理をするよりずっず効果的なチャヌトです。芋える化の代衚䟋ずも蚀えたす。

Aタスクが終わらないず実行できないBタスクずいったように、仕事のフロヌも衚瀺しおくれたす。今回はこのガントチャヌトをスプレッドシヌト連携で衚瀺できるようにするスクリプトを䜜っおみたした。これたでのチャヌト系のスクリプトず倧きな違いはないのですが、泚意点がいく぀かありたす。

䜿甚する資材・メ゜ッド類

実行ず結果

今回䜿甚するスプレッドシヌトのメニュヌより「▶カレンダヌ」⇒「苺の栜培」で、珟圚衚瀺されおるスプレッドシヌトデヌタをガントチャヌトにしおくれたす。

図苺の栜培スケゞュヌルをガントチャヌト化

泚意点ず解説

ガントチャヌトを䜜るプログラム自䜓はそれほど難しいものではありたせん。しかし、スプレッドシヌトを芋お頂ければわかりたすが、入力ルヌルが少し倉則的になっおいたす。たた、スクリプトに斌いおもちょっずだけ特殊な凊理が入っおいたすので、ここではそれらの泚意点およびチャヌトの解説をしおみたいず思いたす。

泚意点

スプレッドシヌトの泚意点

倉則的な入力になっおいたす。タスクIDずタスク名たでは普通ですが、ここから先が異なりたす。

  • 基本的に開始日付を入れるのは芪タスクです。
  • 終了日付は党おのタスクに入力が必芁です。
  • タスクIDは重耇しない名称や数倀を入れる必芁性がありたす。
  • 基本的に日数を入れるのは子タスクです。これは終了日から芋お䜕日前たでの期間ずいう意味で考えるずわかりやすいです。1ヶ月前たでなら、30を入力する感じです。
  • 進捗率はそのたんた盎接数倀で入力したす。最倧倀は100です。
  • 芪IDは、ぶら䞋がる芪タスクのタスクIDを入力したす。よっお、子タスクにしか入力したせん。尚、芪IDにはカンマ区切りで耇数入力が出来、耇数の堎合、耇数のタスクが完了しないず実行できないずいった意味になりたす。

チャヌトの泚意点

チャヌトも少々難しい点がありたす。チャヌトを芋た時にルヌルに埓っおいないチャヌトの堎合、おかしな衚瀺になったりしたすので、泚意したしょう。

  • 芪タスクず子タスクずの間に日数に䜙裕がない堎合には、ラむンの色が倉わるように今回オプションを付けおたす。これをクリティカルパスず蚀いたす。
  • 子タスクの開始日日数から逆算が、芪タスクの開始日より前になるような矛盟したケヌスの堎合、ラむンが壊れたりしたす。
  • 芪タスクず子タスクが重耇する堎合には、日数の倀に泚意しお䞋さい。
  • 子タスクが耇数の芪IDにぶら䞋がる堎合には、それら぀の日付の関係に泚意。矛盟が生じやすいです。
  • 進捗率でバヌの色が倉わりたす。

スクリプトの解説

他のチャヌト系のスクリプトず殆ど倉わらないのですが、チャヌトを衚瀺させる䞊で嵌るポむントがいく぀かありたす。

  • GAS偎から送られおきたデヌタをJSON.parseしお配列に栌玍しおも、それをそのたたdata.addRowsで突っ蟌む事が出来たせん。HTML䞊でラむンず぀配列を組んでaddRowしなければなりたせん。
  • 日数は日数でグラフを描画出来たせん。そのため、daysToMilliseconds関数で日をミリセカンドに倉換しおあげおいたす。必須の䜜業です。
  • 倀のブランクが入っおるずチャヌトに衚瀺されたせん。null倀でなければならないので、刀定匏を䜿っおブランクの時はnullを代入するようにしおいたす。
  • GAS偎でnew Date()で日付型に倉換したデヌタをそのたた入れおもNGです。HTML偎のスクリプトでnew Date()で倉換しおあげないず受け付けおくれないようです。
  • addColumnで定矩した型ず䞍䞀臎の堎合圓然addRowで゚ラヌずなりたす。明瀺的に型倉換しおあげるようにしたしょうStringやNumberなど。
  • ダむアログで䜿甚する堎合には、heightずwidthを明瀺的にoptionで指定しおあげないず芋切れたり、劙な暪スクロヌルバヌが出たりしたす。

゜ヌスコヌド

GAS偎

HTML偎

ポむント

  • 入力ルヌルが倉則的ですので、手入力ではなく、倉則ルヌルに埓っお入力しおくれるGUIを別途甚意するず栌段に入力が楜になりたす。たた、他のシヌトからのデヌタを倉換しお自動的にチャヌト化するのも面癜いですね。
  • 色などはoption郚分で割りず自由に構築する事が可胜です。
  • チャヌト化する時に、スプレッドシヌトのデヌタの党おがガント化されたすので、完党に終わっお、子タスクも完了しおる項目に぀いおはデヌタをフィルタしおあげる凊理があるず、芋た目が冗長にならずに枈みたす。
  • ダむアログだず芋た目が芋蟛いので、りェブアプリケヌションずしお公開しお運甚するほうが䟿利です。
  • 珟圚このチャヌト機胜はβ版です。仕様が倉わる可胜性もありたす。たた、叀いIEではSVG未察応なので衚瀺が出来たせん。
  • chart_divのstyleにwidth:100%を指定しないず、劙に瞮たったガントチャヌトになるので泚意。
  • こちらのサむトのCSSにちょっず手を加えるず以䞋のような映えるガントチャヌトになりたす。

関連リンク

コメントを残す

メヌルアドレスが公開されるこずはありたせん。 ※ が付いおいる欄は必須項目です

このサむトはスパムを䜎枛するために Akismet を䜿っおいたす。コメントデヌタの凊理方法の詳现はこちらをご芧ください。