見出し画像

#3 タイムカードフォームをつくる/ITド素人がGoogle無料アプリで業務管理システムを作る!


めんどいこと、やめよう?

今日は利用者の出勤管理について。

当初、出勤管理はエクセルのテンプレート(福祉系統括社員さんのPCにしかデータがない)に名前と日付・曜日を打ち込んでプリントしたものに書き込む方式でした。

この名前・日付もプルダウン選択や関数による自動記入ではありません。
毎月末に、福祉系統括社員さんが
 ○月○日(○)、○月△日(△)、○月□日(□)………
とセル一つ一つを打ち直していて、ものすごい莫大な工数がかかってたので改善を決意。

出退勤の付け方も、

  1. ファイルにまとめて綴じられているのをバラし、各々に配布

  2. 出勤時間・退勤時間・実働時間・昼食購入の有無・送迎利用の有無を書き込ませる

  3. 回収して再度綴じる

というめっっっっっちゃくちゃに面倒なことをしてたんでそこもどうにかしたかった。

【やったこと】

  1. スプレッドシートで出勤簿のテンプレートを作成

  2. Googleフォームでタイムカードフォームを作成

  3. フォームの回答時間を制限

  4. フォームの回答をスプレッドシートと連携

【どんな感じでやったか】

出勤簿のテンプレートを作る

まず、出勤簿のテンプレートとなるスプレッドシートを作成しました。

出勤簿テンプレ。ファイル名はこの後「タイムカード」にしました。

出勤簿への反映に必要な質問を洗い出す

※フォームの回答と出勤簿スプレッドシートをリンクさせるので、設問タイトルを間違えないよう注意します。

*お名前

  • 自分の名前をプルダウン形式で選択

*出退勤

  • 「出勤」「退勤」をラジオボタンで選択

*出勤(出勤時間)

  • 10:00(午前出勤)

  • 13:00(午後出勤)

  • 遅刻 (それ以外)

*退勤(退勤時間)

  • 12:00(午前中のみ利用)

  • 15:00(フルタイム、午後のみ利用)

  • 早退 (それ以外)

*昼食購入、送迎1、送迎2(昼食・送迎)

  • 昼食購入・送迎利用があった場合のみ、各個チェック

めんどくさくないよう、選ぶだけのシンプルフォームにしました。

フォームの設問分岐はこんな感じ

できたフォームと設定はこんな感じ

一番下、送迎2だったわ。間違えた。

フォームの回答時間を制限する

営業時間は10:00〜15:00ですが、時間ぴったりにフォーム受付を開始・終了されても困るのでちょっとずらしました。

参考URL >>

フォーム編集画面右上のてんてんから「<>スクリプトエディタ」を起動し、スクリプトを書きます。

書き終わったら左側の目覚まし時計マーク「トリガー」タブに移動。

「+ トリガーを追加」をクリック。

回答受付の開始時間と終了時間を設定します。

フォームとスプレッドシートを連携する

フォーム編集画面の「回答」タブに移動し、「スプレッドシートにリンク」をクリック。

画面の中央上部

「既存のスプレッドシート」を選択
先に作っていた出勤簿テンプレートのスプレッドシートを選びます。

連携したスプレッドシート内のシート先頭に「フォームの回答 1」シートが追加されます。
フォームの回答データをスプレッドシートに入れ込むのは次回。

【実際書いたスクリプト】

前回のは外部から回答されても特に問題ないのでフォームのURLをそのままにしていましたが、今回以降は隠しますね。

//フォームのURLを入力
URL = "https://docs.google.com/forms/d/該当フォームのURL";
//ここから下は書き換える必要はありません
var Form = FormApp.openByUrl(URL);
//フォームを受付開始にする関数
function open(){
  Form.setAcceptingResponses(true);
}
//フォームを受付終了にする関数
function close(){
  Form.setAcceptingResponses(false);
}

こんな感じ。
次は今回作ったフォームの回答を、出勤簿スプシに自動ではめ込む仕組みを関数でつくったはなしをさせてください。

サブアカウントのまっさらGoogleドライブに実際作った業務管理システムを順に再現させながら記事を書いているので更新は不定期になります。

よければまた見てくださると嬉しいです。

今日はこのへんで。ありがとうございました。

いいなと思ったら応援しよう!