シフト管理表を作ってみる -googleスプレッドシート-


バイトで上司に呼び出されました

塾でバイトをしているため,生徒の成績が下がってしまったとか,何かミスでもしたのかと戦々恐々としながら向かいました.

まぁなんということもなく,今後の指導方針と,大学の予定からいつシフトに入れるかということでした.

しかし,話の締めに大きな案件を受けることとなりました.

「Plain先生,何かシフトの管理するのにいい方法とかないですかね?」

なぜ,ただのバイトである私にそんな話をされるのかというと,上司以外ほとんどの講師がアルバイトだからなんですね.

何か案があれば,上手くいかなくても問題はないということでしたので,とりあえず「考えてみます」と返しておきました.

考える気のないような返事ですが,少し気になるのでやるだけやってみましょう.

私はエンジニアの卵ですので技術的に解決していきたいと思います.


仕様・設計

初心者が始めから何かを作り始めるのはあまりよろしくないので,どのように作っていくのかをまとめてみましょう.

現状,問題点

もともと,紙ベースで1か月ごとのシフトを集めて上司が打ち込んでいました.

配る→集める→打ち込む→まとめる→振り分ける→確認する

というタスクに分けることができますが,なかなかに大変そうですね(他人事)

今回は「配る・集める・打ち込む」までを手早く簡単にできるよう作成していきます.

前提条件

予算とかないので無料で扱えるサービスで作る

誰が,何曜日の,どの時間帯に仕事に入ることができるかをわかりやすくまとめるもの

また,仕事場のグループLINEがあるので,そこから入力・提出できるようにしていきましょう.

制作手法

今回はタイトルにあるとおり,Googleスプレッドシートを使ってみようと思います.

理由としては,

  • 無料であること
  • Googleフォームで収集したデータを扱えること
  • LINEでURLを共有できること
  • 雛形さえ作ってしまえば編集が簡単であること
  • などがあります.


    フォームを作る

    まずは入力元のフォームを作ります.

    誰が,何曜日の,どの時間帯に入れるのかということを入力しやすく,データを扱いやすいようにしていきます.

    f:id:Mr_Plain:20200921150016p:plainf:id:Mr_Plain:20200921150726p:plain

    この日だけは入れないということもあるので,コメントを書けるセクションを用意してもいいですね.

    このフォームを使って回答を収集すると下のような回答シートが作られます.

    f:id:Mr_Plain:20201206235916j:plain


    シートに関数を加える

    このままでは,何曜日のどこに誰が入っているのかわからないのでシートを集計するための関数を加えていきます.

    googleスプレッドシートではQuery関数というものを用いることで,データをSQLのように処理できるようになります.

    参考:【メモ】Google SpreadsheetでSQLが書ける?Query関数が便利な件。


    そして,集計したものが下の表です.

    f:id:Mr_Plain:20201207000745j:plain

    何曜日のどこに誰が入っているのかが一目でわかるようになりました.


    今回使用した関数は次のようなものです.

    =QUERY('シート1'!B2:H,"SELECT B WHERE C like '%A%'")

    回答シートのB2からH(名前から土曜日の入力)を見て,その曜日のコマが含まれる部分に対応した名前を入れていきます.

    回答シートではAコマ,Bコマ,Cコマのように書かれるため,%A%とすることで,文字Aが含まれるマスという条件付けをしています.

    これを曜日とコマに従って,AからSまでの19マス分記述します.


    運用

    うれしいことに作ったフォームは採用されて,実際にシフト管理に使われることとなりました.

    使い始めて3か月がたった現在,問題なく使えています.

    しかし,月ごとに前の月のデータを消去してシートとフォームを使いまわしているため,入力されたものが少しずつ下にずれていくという問題を発見しました.

    上司は気にしていないようなので急いで修正することはしませんが...


    まとめ

    勤務時間中に作成したため事務給がついて,googleスプレッドシートについて勉強もできて一石二鳥でした.

    最後の方で問題も見つかったので,改善策を探していきたいと思っています.

    使いまわさないように,gasを使ってシートとフォームを生成する的なものとかありそうですけど...

    次はgasにでも手を出してみましょうか

    予定は未定