中級者向け実践:一般企業でのGAS API連携による夏季休暇申請・承認ワークフロー(中規模企業向け)

中級者向け実践:一般企業での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連携を活用することで、夏季休暇申請・承認ワークフローを効率化し、従業員と管理者の負担を軽減できます。今回紹介した例を参考に、自社のニーズに合わせたシステムを構築してみてください。