中級者向け実践:一般企業でのGASによる夏季業務効率化 – Gmail操作による休暇申請・承認自動化システム(中規模企業向け)
本記事では、中規模企業における夏季の業務効率化を目的として、Google Apps Script(GAS)を活用したGmail操作による休暇申請・承認自動化システムの実践的な構築方法を解説します。対象レベルは中級者で、GASの基本的な知識とGmail APIの利用経験がある方を想定しています。
導入
夏季休暇シーズンは、申請業務の集中や承認遅延による業務の停滞が発生しやすくなります。GASを活用することで、これらの課題を解決し、従業員満足度の向上と管理部門の負担軽減に貢献できます。
システム概要
本システムは、以下の機能を提供します。
- 従業員からの休暇申請:Gmailで所定の書式で申請
- 申請内容の自動解析:GASがGmailを監視し、申請内容を解析
- 承認依頼の自動送信:承認者へ承認依頼メールを自動送信
- 承認/却下処理:承認者がメール内のリンクから承認/却下
- 結果の通知:申請者へ承認/却下結果を自動通知
- スプレッドシートへの記録:申請情報をスプレッドシートに記録
事前準備
- Google Workspace環境の準備
- GASプロジェクトの作成
- Gmail APIの有効化:GASエディタから[リソース] > [Googleの拡張サービス]を選択し、Gmail APIを有効化
GASコード例
以下のコードは、Gmailを監視し、休暇申請メールを解析してスプレッドシートに記録する例です。
// スプレッドシートIDとシート名を定義
const SPREADSHEET_ID = "YOUR_SPREADSHEET_ID";
const SHEET_NAME = "休暇申請";
function checkVacationRequests() {
// 検索クエリを定義 (例: 件名に「休暇申請」を含むメール)
const query = "subject:'休暇申請' is:unread";
// Gmailを検索
const threads = GmailApp.search(query);
// スレッドを処理
threads.forEach(thread => {
const messages = thread.getMessages();
messages.forEach(message => {
// メッセージが未読の場合のみ処理
if (message.isUnread()) {
// メール本文を取得
const body = message.getPlainBody();
// 申請内容を解析 (簡略化のため、正規表現などは省略)
const applicant = message.getFrom();
const startDate = extractDate(body, "開始日"); //extractDate関数は別途実装
const endDate = extractDate(body, "終了日"); //extractDate関数は別途実装
const reason = extractReason(body); //extractReason関数は別途実装
// スプレッドシートに記録
recordToSpreadsheet(applicant, startDate, endDate, reason);
// メールを既読にする
message.markRead();
}
});
});
}
// スプレッドシートに記録する関数
function recordToSpreadsheet(applicant, startDate, endDate, reason) {
const ss = SpreadsheetApp.openById(SPREADSHEET_ID);
const sheet = ss.getSheetByName(SHEET_NAME);
sheet.appendRow([applicant, startDate, endDate, reason, new Date()]);
}
//日付を抽出する関数(例)
function extractDate(body, keyword) {
const regex = new RegExp(keyword + ':(.*?)(\n|$)');
const match = body.match(regex);
if (match && match[1]) {
return match[1].trim();
} else {
return '';
}
}
//理由を抽出する関数(例)
function extractReason(body) {
const regex = new RegExp('理由:(.*?)(\n|$)');
const match = body.match(regex);
if (match && match[1]) {
return match[1].trim();
} else {
return '';
}
}
承認/却下処理
承認者がメール内のリンクをクリックすると、GASで作成したWebアプリケーションが起動し、承認/却下を決定できるようにします。承認結果はスプレッドシートに記録され、申請者にメールで通知します。
応用例
- Slack連携:承認結果をSlackに通知
- カレンダー連携:承認された休暇をGoogleカレンダーに自動登録
- 勤怠管理システム連携:休暇情報を勤怠管理システムに連携
セキュリティ
Gmail APIの利用には、適切な認証と認可が必要です。また、スプレッドシートへのアクセス権限も適切に管理する必要があります。
まとめ
GASを活用することで、Gmail操作による休暇申請・承認を自動化し、夏季の業務効率化を実現できます。本記事で紹介したコード例を参考に、自社の業務に合わせたシステムを構築してみてください。夏季休暇の申請業務を効率化し、従業員と管理部門双方の負担を軽減しましょう。