FormApp.createで勤怠管理を効率化!GASで始めるカスタムフォーム
勤怠管理は、企業にとって重要な業務の一つですが、手作業で行うには時間と手間がかかります。そこで、Google Apps Script(GAS)のFormApp.createを活用することで、効率的な勤怠管理システムを構築できます。この記事では、FormApp.createの基本的な使い方から、勤怠管理に特化した応用例、よくある問題の解決策までを詳しく解説します。
FormApp.createとは?
FormApp.create(title)は、GASでGoogleフォームを新規作成するための関数です。この関数を使うことで、プログラムから自動的にフォームを作成し、質問項目を追加したり、回答の送信先を設定したりすることができます。フォームの作成を自動化することで、手作業による設定ミスを減らし、効率的なフォーム運用が可能になります。
FormApp.createの基本的な使い方
FormApp.create関数は、引数としてフォームのタイトルを受け取ります。以下は、基本的な使用例です。
function createAttendanceForm() {
// フォームを作成
const form = FormApp.create('勤怠管理フォーム');
// フォームの設定(例:説明文の追加)
form.setDescription('毎日の勤怠状況を報告してください。');
// フォームのURLを取得してログに出力
Logger.log(form.getPublishedUrl());
}
勤怠管理システムの実装
FormApp.createを使って、勤怠管理に必要な情報を収集するためのフォームを作成します。具体的には、出勤時間、退勤時間、休憩時間、業務内容などを入力できる質問項目を追加します。
実装例1:シンプルな勤怠管理フォーム
以下のコードは、名前、出勤時間、退勤時間を入力するシンプルな勤怠管理フォームを作成する例です。
function createSimpleAttendanceForm() {
// フォームを作成
const form = FormApp.create('簡易勤怠管理フォーム');
// 質問項目を追加
form.addTextItem().setTitle('氏名');
form.addDateTimeItem().setTitle('出勤時間');
form.addDateTimeItem().setTitle('退勤時間');
// フォームの設定
form.setCollectEmail(true); // メールアドレスを収集
form.setRequireLogin(true); // ログイン必須
// スプレッドシートに回答を送信
const ss = SpreadsheetApp.getActiveSpreadsheet();
form.setDestination(FormApp.DestinationType.SPREADSHEET, ss.getId());
// フォームのURLをログに出力
Logger.log(form.getPublishedUrl());
}
実装例2:詳細な勤怠管理フォーム
より詳細な情報を収集するために、休憩時間、業務内容、備考欄などを追加したフォームを作成します。
function createDetailedAttendanceForm() {
// フォームを作成
const form = FormApp.create('詳細勤怠管理フォーム');
// 質問項目を追加
form.addTextItem().setTitle('氏名');
form.addDateItem().setTitle('日付');
form.addTimeItem().setTitle('出勤時間');
form.addTimeItem().setTitle('退勤時間');
form.addNumberItem().setTitle('休憩時間(分)');
form.addTextItem().setTitle('業務内容');
form.addTextItem().setTitle('備考');
// フォームの設定
form.setCollectEmail(true);
form.setRequireLogin(true);
// スプレッドシートに回答を送信
const ss = SpreadsheetApp.getActiveSpreadsheet();
form.setDestination(FormApp.DestinationType.SPREADSHEET, ss.getId());
// フォームのURLをログに出力
Logger.log(form.getPublishedUrl());
}
実装例3:プルダウンメニューを使った業務内容の選択
業務内容をプルダウンメニューから選択できるようにすることで、入力の手間を省き、データの統一性を高めます。
function createAttendanceFormWithDropdown() {
// フォームを作成
const form = FormApp.create('プルダウン式勤怠管理フォーム');
// 質問項目を追加
form.addTextItem().setTitle('氏名');
form.addDateItem().setTitle('日付');
form.addTimeItem().setTitle('出勤時間');
form.addTimeItem().setTitle('退勤時間');
// 業務内容の選択肢
const taskOptions = ['会議', '開発', '事務作業', 'その他'];
form.addMultipleChoiceItem()
.setTitle('業務内容')
.setChoices(taskOptions.map(option => FormApp.createChoice(option)));
form.addTextItem().setTitle('備考');
// フォームの設定
form.setCollectEmail(true);
form.setRequireLogin(true);
// スプレッドシートに回答を送信
const ss = SpreadsheetApp.getActiveSpreadsheet();
form.setDestination(FormApp.DestinationType.SPREADSHEET, ss.getId());
// フォームのURLをログに出力
Logger.log(form.getPublishedUrl());
}
よくある問題とトラブルシューティング
- フォームが作成されない:GASの実行権限が不足している可能性があります。スクリプトエディタで権限を確認し、許可してください。
- スプレッドシートにデータが送信されない:
setDestination関数の引数が正しいかどうか確認してください。スプレッドシートIDが正しいか、タイプがFormApp.DestinationType.SPREADSHEETになっているかを確認してください。 - タイムゾーンの問題:GASとスプレッドシートのタイムゾーンが異なる場合、日付や時間の表示がずれることがあります。スクリプトとスプレッドシートのタイムゾーンを統一してください。
カスタマイズ方法と応用例
- 条件分岐:特定の条件に基づいて質問項目を表示/非表示にする。
- 自動計算:出勤時間と退勤時間から労働時間を自動計算する。
- API連携:他のシステムと連携して、勤怠データを自動的に連携する。
まとめ
FormApp.createを活用することで、GASを使って簡単に勤怠管理フォームを作成し、業務効率化を実現できます。この記事で紹介したコード例を参考に、自社のニーズに合わせたカスタムフォームを作成してみてください。

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