FormApp.createで始める勤怠管理システム:GASで業務効率化
勤怠管理は、企業にとって非常に重要な業務ですが、手作業で行うには時間と労力がかかります。特に中小企業では、専用のシステムを導入するコストが負担になることもあります。そこで、Google Apps Script (GAS) の FormApp.create を活用することで、無料で高機能な勤怠管理システムを構築し、業務効率化を実現できます。
FormApp.createとは?
FormApp.create(title) は、GASで新しいGoogleフォームを作成するための関数です。この関数を使うことで、出退勤の記録、休憩時間の申請、残業申請など、勤怠管理に必要な情報を収集するためのフォームをプログラムから自動的に作成できます。
FormApp.createの基本的な使い方
FormApp.create は非常にシンプルで、フォームのタイトルを指定するだけで使用できます。
function createAttendanceForm() {
// フォームのタイトルを設定
const formTitle = "勤怠管理フォーム";
// フォームを作成
const form = FormApp.create(formTitle);
// フォームの設定(回答の送信先、権限など)
form.setDestination(FormApp.DestinationType.SPREADSHEET, SpreadsheetApp.getActiveSpreadsheet().getId());
form.setAllowResponseEdits(false); // 回答の編集を許可しない
form.setAcceptingResponses(true); // 回答を受け付ける
// フォームのURLをログに出力
Logger.log(form.getPublishedUrl());
}
勤怠管理システムの実装方法
FormApp.create を使って、具体的な勤怠管理システムを構築する手順を解説します。
1. フォームの作成
まず、FormApp.create を使って勤怠管理用のフォームを作成します。フォームには、出勤、退勤、休憩開始、休憩終了などの項目を含めます。
2. フォーム項目の追加
フォームに以下の項目を追加します。これらの項目は、勤怠管理に必要な情報を収集するために重要です。
- 日付(
form.addDateItem()) - 社員ID(
form.addTextItem()) - 出勤時刻(
form.addTimeItem()) - 退勤時刻(
form.addTimeItem()) - 休憩開始時刻(
form.addTimeItem()) - 休憩終了時刻(
form.addTimeItem()) - 備考(
form.addParagraphTextItem())
3. スプレッドシートへの連携
フォームの回答をGoogleスプレッドシートに自動的に保存するように設定します。これにより、収集したデータを簡単に集計・分析できます。
4. スクリプトの実行トリガー設定
GASのトリガーを設定して、フォームが送信されるたびにスクリプトが実行されるようにします。これにより、リアルタイムでデータを処理できます。
実用的なコード例
以下に、FormApp.create を使用した勤怠管理システムの実装例をいくつか紹介します。
例1:基本の勤怠管理フォーム作成
function createAttendanceForm() {
const formTitle = "勤怠管理フォーム";
const form = FormApp.create(formTitle);
// フォームに項目を追加
form.addDateItem().setTitle("日付");
form.addTextItem().setTitle("社員ID");
form.addTimeItem().setTitle("出勤時刻");
form.addTimeItem().setTitle("退勤時刻");
form.addTimeItem().setTitle("休憩開始時刻");
form.addTimeItem().setTitle("休憩終了時刻");
form.addParagraphTextItem().setTitle("備考");
// スプレッドシートを回答の送信先に設定
form.setDestination(FormApp.DestinationType.SPREADSHEET, SpreadsheetApp.getActiveSpreadsheet().getId());
Logger.log(form.getPublishedUrl());
}
例2:出勤・退勤ボタン付きフォーム
この例では、出勤と退勤を区別するためのラジオボタンを追加します。
function createAttendanceFormWithButtons() {
const formTitle = "勤怠管理フォーム(出勤・退勤ボタン付き)";
const form = FormApp.create(formTitle);
// 日付項目
form.addDateItem().setTitle("日付");
// 社員ID項目
form.addTextItem().setTitle("社員ID");
// 出勤・退勤選択
form.addMultipleChoiceItem()
.setTitle("出勤・退勤")
.setChoices([
form.createChoice("出勤"),
form.createChoice("退勤")
]);
// 時刻項目
form.addTimeItem().setTitle("時刻");
// 備考欄
form.addParagraphTextItem().setTitle("備考");
// スプレッドシートを回答の送信先に設定
form.setDestination(FormApp.DestinationType.SPREADSHEET, SpreadsheetApp.getActiveSpreadsheet().getId());
Logger.log(form.getPublishedUrl());
}
例3:特定の時間帯のみ回答を受け付けるフォーム
この例では、特定の時間帯のみフォームがアクティブになるように設定します。勤務時間外の不正な打刻を防ぐことができます。
function createAttendanceFormWithTimeLimit() {
const formTitle = "勤怠管理フォーム(時間制限付き)";
const form = FormApp.create(formTitle);
// フォームに項目を追加
form.addDateItem().setTitle("日付");
form.addTextItem().setTitle("社員ID");
form.addTimeItem().setTitle("出勤時刻");
form.addTimeItem().setTitle("退勤時刻");
// スプレッドシートを回答の送信先に設定
form.setDestination(FormApp.DestinationType.SPREADSHEET, SpreadsheetApp.getActiveSpreadsheet().getId());
// トリガーを設定して、特定の時間帯のみ回答を受け付ける
ScriptApp.newTrigger("checkFormStatus")
.timeBased()
.everyMinutes(5) // 5分おきにチェック
.create();
Logger.log(form.getPublishedUrl());
}
function checkFormStatus() {
const form = FormApp.openById(PropertiesService.getScriptProperties().getProperty("FORM_ID"));
const now = new Date();
const hour = now.getHours();
// 9時から18時まで回答を受け付ける
if (hour >= 9 && hour < 18) {
form.setAcceptingResponses(true);
} else {
form.setAcceptingResponses(false);
}
}
よくある問題とトラブルシューティング
- フォームが作成されない:GASの実行権限が不足している可能性があります。権限を確認してください。
- スプレッドシートにデータが保存されない:フォームの回答送信先が正しく設定されているか確認してください。
- スクリプトがエラーになる:コードに誤りがないか、APIのバージョンが最新であるか確認してください。
カスタマイズ方法と応用例
FormApp.create で作成したフォームは、さまざまな方法でカスタマイズできます。
- デザインの変更:フォームのデザインを会社のブランドに合わせて変更できます。
- 入力規則の追加:入力されたデータが正しい形式であるか検証するための規則を追加できます。
- 承認ワークフローの追加:上長承認が必要な場合に、承認ワークフローを組み込むことができます。
まとめ
FormApp.create を活用することで、無料で高機能な勤怠管理システムを構築し、業務効率化を実現できます。この記事で紹介したコード例を参考に、ぜひ自社のニーズに合ったシステムを構築してみてください。
GASの可能性は無限大です。創意工夫次第で、さまざまな業務を自動化し、効率化することができます。ぜひ、GASの世界を探求してみてください。

CodeCampは、現役エンジニアからマンツーマンで学べるオンラインプログラミングスクールです。WebデザインやWebサービス開発、転職支援など、目的に合わせた多様なコースが選べます。
朝7時〜夜23時40分まで、365日レッスンが受けられるため、忙しい方でも自分のペースで学習を進めることが可能です。通過率8%の厳しい選考を通過した質の高い講師陣が、あなたのキャリアチェンジを強力にサポートします。
さらに、未経験者向けのカリキュラムや、学習開始から20日以内の全額返金保証制度もあるため、プログラミング学習に不安を感じている方でも安心して始めることができます。
CodeCampで理想の働き方を実現しよう