GAS Date.getHours()で始める出席管理:教育現場の効率化
教育現場における生徒の出席管理は、教師にとって重要な業務の一つです。しかし、手作業での記録や集計は時間と労力を要し、ミスも発生しやすくなります。そこで、Google Apps Script(GAS)とDate.getHours()関数を活用することで、出席管理を自動化し、業務効率を大幅に改善できます。本記事では、GASのDate.getHours()関数を用いた出席管理システムの構築方法について、具体的なコード例を交えながら解説します。
Date.getHours()関数の基本
Date.getHours()は、JavaScriptのDateオブジェクトが持つメソッドの一つで、日付オブジェクトから「時間」を取得します。取得できる値は0から23までの整数です。この関数を利用することで、特定の時間帯に出席状況を記録したり、遅刻者を特定したりすることが可能になります。
// 現在時刻の時間を取得する例
function getCurrentHour() {
const now = new Date();
const hour = now.getHours();
Logger.log(hour); // 現在の時間がログに出力される
}
GASでの出席管理システムの実装
ここでは、GoogleスプレッドシートとGASを連携させて、出席管理システムを構築する例を紹介します。
基本的な出席記録
生徒がフォームに回答した時刻を記録し、出席とするシンプルな例です。
// スプレッドシートに出席時間を記録する関数
function recordAttendance(studentId) {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName("出席記録");
const now = new Date();
const hour = now.getHours();
const minute = now.getMinutes();
const timestamp = hour + ":" + minute;
// 出席時間をスプレッドシートに記録
sheet.appendRow([studentId, timestamp]);
}
時間帯別の出席判定
特定の時間帯(例:午前9時〜午前10時)に出席があったかどうかを判定する例です。
// 時間帯別の出席を判定する関数
function checkAttendance() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName("出席状況");
const now = new Date();
const hour = now.getHours();
// 午前9時から10時の間に出席があったかを判定
if (hour >= 9 && hour < 10) {
sheet.getRange(1, 1).setValue("出席"); // A1セルに出席と記録
} else {
sheet.getRange(1, 1).setValue("欠席"); // A1セルに欠席と記録
}
}
遅刻者の自動リスト作成
設定した時間(例:午前9時)を過ぎてから出席した場合、遅刻者としてリストに自動的に追加する例です。
// 遅刻者をリストアップする関数
function listLatecomers(studentId) {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName("遅刻者リスト");
const now = new Date();
const hour = now.getHours();
// 9時以降に出席した場合、遅刻者リストに追加
if (hour >= 9) {
sheet.appendRow([studentId, now]);
}
}
実用的なコード例とカスタマイズ
これらのコード例は、必要に応じてカスタマイズできます。例えば、時間帯ごとの出席状況をより詳細に分析するために、複数の時間帯を設定したり、出席状況をグラフで可視化したりすることができます。
特定の曜日の時間割に対応
Date.getDay()と組み合わせることで、曜日ごとに異なる時間割に対応した出席管理が可能です。
// 曜日ごとの時間割に対応した出席管理
function checkAttendanceByDay() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName("出席状況");
const now = new Date();
const day = now.getDay(); // 0:日, 1:月, ..., 6:土
const hour = now.getHours();
// 月曜日の1限(9時)に出席確認
if (day === 1 && hour === 9) {
sheet.getRange(1, 1).setValue("月曜1限出席");
}
}
よくある問題とトラブルシューティング
- 時間が正しく取得できない:タイムゾーンの設定を確認してください。
- スプレッドシートへの書き込みがうまくいかない:スプレッドシートのIDやシート名が正しいか確認してください。
- フォームとの連携ができない:フォームの回答をトリガーにGASを実行する設定が正しく行われているか確認してください。
まとめ
GASとDate.getHours()関数を組み合わせることで、教育現場における出席管理を効率化することができます。この記事で紹介したコード例を参考に、自校のニーズに合わせた出席管理システムを構築し、先生方の負担を軽減しましょう。

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