GoogleスプレッドシートとGASを活用した勤怠管理と給与計算の自動化
近年、労務管理の効率化は多くの企業で重要な課題となっています。
特に中小企業では、限られたリソースの中で正確かつ効率的に勤怠管理や給与計算を行う必要があります。
そこで今回は、無料でできてしまうGoogleスプレッドシートとGoogle Apps Script(GAS)を活用して勤怠管理と給与計算を自動化する方法を紹介します。
1. システム構築の概要
自動化の仕組みは以下のステップで構成されます。
1. 勤怠データ入力フォームの作成
従業員が簡単に打刻や勤怠記録を入力できるGoogleフォームを作成します。
そのデータはGoogleスプレッドシートに自動で保存されます。
2. 勤怠データの集計
GASを使ってスプレッドシート上で日次、週次、月次の勤怠データを自動集計します。
3. 給与計算の自動化
勤怠データを基に給与計算を自動化します。
従業員ごとの時給や固定給などの条件をスプレッドシートで管理し、計算結果を自動生成します。
4. 通知機能の追加
勤怠データの不足やエラーを検知した際、管理者にSlackやメールで通知を送る仕組みを実装します。
2. システムの具体的な構築手順
1. 勤怠データ入力フォームの作成
1. Googleフォームを作成
• フォームには以下の項目を設定します。
• 従業員名
• 日付
• 出勤時刻
• 退勤時刻
• 休憩時間
2. スプレッドシートに連携
• フォームの回答データは自動的にスプレッドシートに記録されます。
2. 勤怠データの集計
1. スプレッドシートの設定
• 勤怠記録用のシートを作成します。
フォームのデータを「データシート」として利用し、集計結果は別の「集計シート」に出力します。
2. GASスクリプトで日次・月次集計を自動化
以下のコードを参考に、日ごとの勤務時間や残業時間を計算します。
function calculateAttendance() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("データシート");
var data = sheet.getDataRange().getValues();
var outputSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("集計シート");
for (var i = 1; i < data.length; i++) { // 1行目はヘッダー
var startTime = new Date(data[i][2]); // 出勤時刻
var endTime = new Date(data[i][3]); // 退勤時刻
var breakTime = data[i][4]; // 休憩時間
if (startTime && endTime) {
var workHours = (endTime - startTime) / (1000 * 60 * 60) - breakTime;
outputSheet.getRange(i + 1, 5).setValue(workHours); // 勤務時間列に出力
}
}
}
3. 給与計算の自動化
1. 従業員情報シートの作成
• 従業員名、時給、固定給などの情報を「従業員シート」で管理します。
2. 給与計算ロジックの実装
勤怠データを基に、以下のようなGASコードを使って給与を計算します。
function calculateSalary() {
var attendanceSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("集計シート");
var employeeSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("従業員シート");
var salarySheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("給与計算シート");
var attendanceData = attendanceSheet.getDataRange().getValues();
var employeeData = employeeSheet.getDataRange().getValues();
for (var i = 1; i < attendanceData.length; i++) {
var employeeName = attendanceData[i][0];
var workHours = attendanceData[i][4];
var hourlyRate = 0;
for (var j = 1; j < employeeData.length; j++) {
if (employeeData[j][0] === employeeName) {
hourlyRate = employeeData[j][1];
break;
}
}
if (hourlyRate > 0) {
var salary = workHours * hourlyRate;
salarySheet.getRange(i + 1, 2).setValue(salary);
}
}
}
4. 通知機能の追加
1. エラー通知のスクリプト
勤怠データに抜け漏れがある場合、管理者にSlackで通知します。
function sendNotification() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("データシート");
var data = sheet.getDataRange().getValues();
for (var i = 1; i < data.length; i++) {
if (!data[i][2] || !data[i][3]) { // 出勤時刻または退勤時刻が未入力
var message = "勤怠データにエラーがあります: 行 " + (i + 1);
sendToSlack(message);
}
}
}
function sendToSlack(message) {
var url = "https://hooks.slack.com/services/xxxx/xxxx/xxxx"; // Webhook URL
var payload = JSON.stringify({text: message});
var options = {
method: "post",
contentType: "application/json",
payload: payload
};
UrlFetchApp.fetch(url, options);
}
3. まとめ
GoogleスプレッドシートとGASを活用することで、手間のかかる勤怠管理や給与計算を効率化できます。
特に中小企業では、コストを抑えながらシステムを導入する手段として非常に有効です。
この仕組みを取り入れることで、管理業務の負担を軽減し、本来の業務に集中できる環境を構築してみてはいかがでしょうか。
構築のお手伝いはぜひ業務効率化サポート「エンジン」にお任せください!