中級者向け実践:一般企業でのGAS API連携による夏季休暇申請・承認ワークフロー(中規模企業向け)
本記事では、一般企業における夏季休暇申請・承認ワークフローをGAS(Google Apps Script)とAPI連携を用いて構築する方法を、中級者向けに解説します。中規模企業(11-100人規模)を想定し、夏季業務効率化を目指します。
はじめに
夏季休暇は従業員の心身のリフレッシュに不可欠ですが、申請・承認プロセスが煩雑だと、担当者の負担が増加し、業務効率が低下する可能性があります。そこで、GASを活用し、API連携を行うことで、申請・承認プロセスを自動化し、効率的なワークフローを実現します。
システム概要
このシステムでは、従業員がGoogleフォームで休暇申請を行い、そのデータをGASで処理し、承認者にメールで通知します。承認者はメール内のリンクから承認・却下を行い、結果がスプレッドシートに記録されます。また、必要に応じてSlackなどのコミュニケーションツールに通知を送ることも可能です。
必要なAPIとサービス
- Google Apps Script
- Google Forms
- Google Sheets
- Gmail API (メール送信)
- Slack API (オプション: Slack通知)
実装手順
1. Googleフォームの作成
まず、休暇申請用のGoogleフォームを作成します。以下の項目を設定します。
- 氏名
- 社員番号
- 休暇開始日
- 休暇終了日
- 休暇理由
2. スプレッドシートの作成
次に、フォームの回答を記録するスプレッドシートを作成します。フォームの回答先をこのスプレッドシートに設定します。
3. GASコードの記述
スプレッドシートにGAS(Google Apps Script)を記述します。以下のコードは、フォームの送信をトリガーにして、承認者にメールを送信する例です。
// スプレッドシートのIDを設定
const SPREADSHEET_ID = "YOUR_SPREADSHEET_ID";
// 承認者のメールアドレスを設定
const APPROVER_EMAIL = "approver@example.com";
function onSubmit(e) {
// フォームの回答を取得
const formResponses = e.response.getItemResponses();
const name = formResponses[0].getResponse();
const employeeId = formResponses[1].getResponse();
const startDate = formResponses[2].getResponse();
const endDate = formResponses[3].getResponse();
const reason = formResponses[4].getResponse();
// スプレッドシートを開く
const ss = SpreadsheetApp.openById(SPREADSHEET_ID);
const sheet = ss.getSheetByName("シート1"); // シート名は適宜変更
// 承認用URLを作成
const approvalUrl = "https://script.google.com/macros/s/YOUR_WEB_APP_ID/exec?action=approve&row=" + e.range.getRowIndex();
const rejectionUrl = "https://script.google.com/macros/s/YOUR_WEB_APP_ID/exec?action=reject&row=" + e.range.getRowIndex();
// メール本文を作成
const subject = "夏季休暇申請のお知らせ";
const body = `以下の休暇申請がありました。
氏名: ${name}
社員番号: ${employeeId}
休暇開始日: ${startDate}
休暇終了日: ${endDate}
理由: ${reason}
承認: ${approvalUrl}
却下: ${rejectionUrl}`;
// メールを送信
MailApp.sendEmail({
to: APPROVER_EMAIL,
subject: subject,
htmlBody: body
});
}
// 承認・却下処理を行うWebアプリケーション
function doGet(e) {
const action = e.parameter.action;
const row = e.parameter.row;
const ss = SpreadsheetApp.openById(SPREADSHEET_ID);
const sheet = ss.getSheetByName("シート1");
if (action === "approve") {
sheet.getRange("G" + row).setValue("承認"); // G列に承認/却下ステータスを記録
return HtmlService.createHtmlOutput("申請を承認しました。");
} else if (action === "reject") {
sheet.getRange("G" + row).setValue("却下");
return HtmlService.createHtmlOutput("申請を却下しました。");
} else {
return HtmlService.createHtmlOutput("無効なリクエストです。");
}
}
コードの解説:
SPREADSHEET_ID
: スプレッドシートのIDを設定します。APPROVER_EMAIL
: 承認者のメールアドレスを設定します。onSubmit(e)
: フォーム送信時に実行される関数です。doGet(e)
: Webアプリケーションとして実行される関数で、承認・却下処理を行います。approvalUrl
,rejectionUrl
: 承認・却下を行うためのURLです。YOUR_WEB_APP_ID
はWebアプリケーションのIDに置き換えてください。
4. トリガーの設定
GASのエディタから、onSubmit
関数にフォーム送信時のトリガーを設定します。「編集」→「現在のプロジェクトのトリガー」から設定できます。
5. Webアプリケーションのデプロイ
承認・却下処理を行うために、GASをWebアプリケーションとしてデプロイします。「公開」→「ウェブアプリケーションとして導入」から設定します。アクセスできるユーザーを「全員」に設定することを推奨します。デプロイ後、YOUR_WEB_APP_ID
をコード内のURLに反映させます。
6. Slack通知 (オプション)
Slack APIを利用して、申請・承認・却下時にSlackに通知を送ることも可能です。Slack APIのセットアップとGASからの連携については、Slack APIのドキュメントを参照してください。
応用例と活用シーン
- 申請状況の可視化: スプレッドシートのデータを元に、Google Chartsで申請状況を可視化できます。
- 承認フローのカスタマイズ: 承認者を複数設定したり、条件によって承認ルートを変更したりできます。
- 他のシステムとの連携: 勤怠管理システムや人事システムと連携することで、より高度な自動化が可能です。
まとめ
GASとAPI連携を活用することで、夏季休暇申請・承認ワークフローを効率化し、従業員と管理者の負担を軽減できます。今回紹介した例を参考に、自社のニーズに合わせたシステムを構築してみてください。