Google Workspaceで勤怠連絡システムを構築したい
はじめに
ワクチン接種率が高まり感染状況は落ち着いてきている昨今ですが、まだまだリモートワークで勤務されている方も多くいらっしゃることと思います。会社が狭い事務所に移転して出勤しても居場所がないような会社もあることでしょう。そんなリモートワークを推奨していて勤怠連絡に課題を持っている会社様向けにGoogle Workspaceの標準機能で実装可能な勤怠連絡システムをご紹介します。
前提条件
極力手間のない形を想定して以下の通りとします。
- 出勤・退勤の選択のみとする
- 出勤時間・退勤時間は自動取得できる仕様とする
- 申請者は自動取得できる仕様とする
- 申請した内容は人事担当者にメールで通知する
- 入力データはSpreadsheet管理とする
完成イメージと処理フロー
完成イメージは以下の通りです。とにかくシンプルに2クリックで申請完了という手軽さを追求した形にしています。
Google Formは入力された内容をSpreadsheetに記録します。その際にメールアドレスを取得しておくことで、誰がいつ申請したかを特定することが可能になっています。フォームを送信した日時はデフォルトで取得可能です。
メール送信の処理(標準機能)
メール通知の仕組みを作っていきます。まずは通知を受け取りたい本人が設定する方式で問題ない場合は、Spreadsheetの標準通知機能を利用して行います。
- フォームの回答ページから回答Spreadsheetを開きます。
- [ツール]→[通知ルール]を開きます。
- [変更が入ったとき]と[メール-1日1回]を選択して[保存]します。
複数人への通知やメーリングリストへの通知をしたい場合は次の章のやり方を参照してください。
メール送信処理(Google Apps Script)
やり方は過去の記事でも紹介しているGoogle Apps Scriptを使って実装します。一日一回の通知を前提としてコーディングを行います。SpreadsheetのGASを使って実装になりますのでFormの回答が記録されているSpreadsheetからスクリプトを記入してください。
function getAttendance() { var now = Utilities.formatDate(new Date(), "Asia/Tokyo", "yyyy-M-d"); var sp = SpreadsheetApp.getActiveSpreadsheet(); var sheet = sp.getActiveSheet(); var i = 2; var msg = ""; while(sheet.getRange("A" + i).getValue() != ""){ if(Utilities.formatDate(sheet.getRange("A" + i).getValue(), "Asia/Tokyo", "yyyy-M-d") == now){ msg += sheet.getRange("C" + i).getValue() + "さんからの勤怠申請\n\n" + "種別:" + sheet.getRange("B" + i).getValue() + "\n" + "打刻時刻:" + sheet.getRange("A" + i).getValue() + "\n\n"; } i = i + 1; } if (msg != ""){ sendEmail(msg); } } function sendEmail(msg){ //環境に合わせて書き換えてください。カンマ区切りで複数宛先も対応可能です const recipient ="<メールアドレス>"; var subject = "勤怠連絡"; GmailApp.sendEmail(recipient, subject, msg); }
コーディングが完了したらトリガーを指定して通知メールが届くようにします。今回の例では毎日午後11時~午前0時の間で実行するように設定しています。
この方法であれば指定した任意のメールアドレスに通知メールを送信することが可能です。また複数宛先の指定にも対応していますので、ご要望に応じて使い分けしてください。
まとめ
今回の記事では、Google Formを使った勤怠連絡システムを作成してみました。この機能はGoogle Workspaceではなく、無料のGmailアカウントのみでも実装が可能なものになっています。リスクゼロでとりあえず試してみることができますので是非ご活用ください。本記事が皆様の製品利活用の一助となりましたら幸いです。