中級者向け実践:一般企業でのGASによる夏季業務効率化 – スプレッドシートとGmail連携による休暇申請・承認システム(中規模企業向け)
本記事では、中規模企業における夏季の業務効率化を目的とした、Google Apps Script(GAS)を活用した休暇申請・承認システムの構築について解説します。特に、スプレッドシートとGmailを連携させることで、申請から承認までのプロセスを自動化し、担当者の負担を軽減します。対象レベルは中級者で、基本的なGASの知識があることを前提とします。
休暇申請・承認システムの概要
本システムは、従業員がスプレッドシート上で休暇申請を行い、承認者がGmailで申請内容を確認し、承認・却下を行うという流れを自動化します。申請状況はスプレッドシートで一元管理され、承認結果は申請者に自動で通知されます。
システムの主な機能
- 休暇申請フォーム(スプレッドシート)
- 申請内容の自動メール送信(Gmail)
- 承認・却下機能(Gmail)
- 申請状況の一元管理(スプレッドシート)
- 承認結果の自動通知(Gmail)
スプレッドシートの準備
まず、休暇申請データを保存するためのスプレッドシートを作成します。以下の項目を含むようにしてください。
- 申請日
- 社員ID
- 氏名
- 所属部署
- 休暇開始日
- 休暇終了日
- 休暇日数
- 申請理由
- 承認者
- 承認状況(未承認、承認、却下)
- 承認日
GASコード例
1. 休暇申請フォームの作成とデータ登録
スプレッドシートに休暇申請フォームを作成し、GASでデータを登録するスクリプトです。
function onFormSubmit(e) {
// フォーム送信時のイベントオブジェクトからデータを取得
const values = e.values;
// スプレッドシートを開く
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("休暇申請");
// 最終行にデータを追記
sheet.appendRow(values);
// 承認者へメールを送信する関数を呼び出す
sendApprovalRequest(values);
}
解説:onFormSubmit(e)
は、スプレッドシートのフォームが送信された際に自動的に実行される関数です。e.values
でフォームの入力値を取得し、スプレッドシートの最終行に追記します。その後、承認者へメールを送信する sendApprovalRequest(values)
関数を呼び出します。
2. 承認者へのメール送信
休暇申請があった際に、承認者へメールを送信するスクリプトです。
function sendApprovalRequest(values) {
// 承認者のメールアドレス
const approverEmail = "approver@example.com";
// メールの件名
const subject = "【休暇申請】" + values[2] + "さんからの申請";
// メールの本文
let body = "以下の内容で休暇申請がありました。
";
body += "申請日:" + values[0] + "
";
body += "氏名:" + values[2] + "
";
body += "休暇開始日:" + values[5] + "
";
body += "休暇終了日:" + values[6] + "
";
body += "申請理由:" + values[8] + "
";
body += "承認する場合は、以下のURLをクリックしてください。
";
//承認・却下処理を行うWebアプリケーションのURLを記載
body += "承認URL: https://script.google.com/macros/s/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/exec?action=approve&row=" + (SpreadsheetApp.getActiveSpreadsheet().getSheetByName("休暇申請").getLastRow()) + "\n";
body += "却下URL: https://script.google.com/macros/s/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/exec?action=reject&row=" + (SpreadsheetApp.getActiveSpreadsheet().getSheetByName("休暇申請").getLastRow());
// メールを送信
MailApp.sendEmail({
to: approverEmail,
subject: subject,
body: body
});
}
解説:sendApprovalRequest(values)
関数は、MailApp.sendEmail()
を使用して、承認者へメールを送信します。メール本文には、申請内容と承認・却下を行うためのWebアプリケーションのURLを含めます。Webアプリケーションについては後述します。approver@example.com
は承認者のメールアドレスに置き換えてください。また、承認URLと却下URLのxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
は、実際にデプロイしたWebアプリケーションのURLに置き換えてください。
3. 承認・却下処理を行うWebアプリケーション
承認者がメール内のURLをクリックした際に、承認・却下処理を行うWebアプリケーションのスクリプトです。
function doGet(e) {
const action = e.parameter.action;
const row = e.parameter.row;
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("休暇申請");
if (action === "approve") {
// 承認処理
sheet.getRange("J" + row).setValue("承認"); // J列は承認状況
sheet.getRange("L" + row).setValue(new Date()); // L列は承認日
sendApprovalResult(row, "承認");
} else if (action === "reject") {
// 却下処理
sheet.getRange("J" + row).setValue("却下");
sheet.getRange("L" + row).setValue(new Date());
sendApprovalResult(row, "却下");
}
return HtmlService.createHtmlOutput("処理が完了しました。");
}
解説:doGet(e)
関数は、WebアプリケーションにGETリクエストが送信された際に実行される関数です。e.parameter.action
で承認または却下のどちらが選択されたかを取得し、e.parameter.row
で処理対象の行番号を取得します。スプレッドシートの該当行の承認状況と承認日を更新し、申請者へ結果を通知する sendApprovalResult(row, status)
関数を呼び出します。Webアプリケーションとしてデプロイする際に、URLを発行し、sendApprovalRequest
関数内のURLを置き換えてください。
4. 承認結果の自動通知
承認・却下の結果を申請者へメールで通知するスクリプトです。
function sendApprovalResult(row, status) {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("休暇申請");
const applicantEmail = sheet.getRange("B" + row).getValue() + "@example.com"; // B列は社員ID
const applicantName = sheet.getRange("C" + row).getValue(); // C列は氏名
const subject = "【休暇申請結果】" + applicantName + "さんの申請";
const body = "休暇申請の結果は「" + status + "」となりました。";
MailApp.sendEmail({
to: applicantEmail,
subject: subject,
body: body
});
}
解説:sendApprovalResult(row, status)
関数は、MailApp.sendEmail()
を使用して、申請者へメールを送信します。メール本文には、承認または却下の結果を記載します。B
列の社員IDに @example.com
を付与してメールアドレスを生成していますが、実際のメールアドレスに合わせて修正してください。
応用例と活用シーン
- 勤怠管理システムとの連携:休暇申請データを勤怠管理システムに連携させることで、より正確な勤怠管理が可能になります。
- 承認フローの複雑化:承認者を複数設定したり、条件によって承認ルートを変更したりすることで、より柔軟な承認フローを構築できます。
- Slackなどのチャットツールとの連携:休暇申請や承認状況をSlackなどのチャットツールに通知することで、リアルタイムな情報共有が可能になります。
まとめ
本記事では、GASを活用した休暇申請・承認システムの構築について解説しました。スプレッドシートとGmailを連携させることで、申請から承認までのプロセスを自動化し、夏季の業務効率化に貢献できます。ぜひ、本記事を参考に、自社のニーズに合わせたシステムを構築してみてください。