GAS Folder.getNameで学校の成績管理を効率化!フォルダ名から生徒情報を抽出

GAS Folder.getNameで学校の成績管理を効率化!フォルダ名から生徒情報を抽出

本記事では、Google Apps Script (GAS) の Folder.getName() 関数を用いて、学校における成績管理を効率化する方法を解説します。特に、フォルダ名に生徒の情報を格納している場合に、この関数が非常に役立ちます。成績管理、出席管理、課題配布など、教育現場での様々な利用シチュエーションを想定し、具体的なコード例とカスタマイズ方法を紹介します。

Folder.getName()関数の基本

Folder.getName() は、指定されたフォルダの名前を取得するためのGASの関数です。この関数を使用することで、フォルダ名をプログラム内で利用できるようになり、様々な処理を自動化できます。

構文

folder.getName()

folderFolder オブジェクトを表します。この関数は引数を取らず、フォルダの名前を文字列として返します。

利用シチュエーション:成績管理における課題と解決策

多くの学校では、生徒ごとにフォルダを作成し、課題や成績情報を管理しています。しかし、フォルダ名から生徒情報を手動で抽出するのは非常に手間がかかります。そこで、Folder.getName() を活用することで、この作業を自動化し、大幅な時間短縮と効率化を実現できます。

成績管理での実装例

ここでは、具体的なコード例を通じて、Folder.getName() を成績管理にどのように活用できるかを解説します。

例1:フォルダ名から生徒名と学籍番号を抽出

例えば、フォルダ名が「20230001_山田太郎」のように、学籍番号と生徒名がアンダースコアで区切られている場合を考えます。以下のコードは、フォルダ名から生徒名と学籍番号を抽出するものです。

function extractStudentInfo() {
// 対象フォルダのID
const folderId = "1abc2def3ghi4jkl5mno";
// フォルダオブジェクトを取得
const folder = DriveApp.getFolderById(folderId);
// フォルダ名を取得
const folderName = folder.getName();
// アンダースコアで分割
const parts = folderName.split("_");
// 学籍番号と生徒名を取得
const studentId = parts[0];
const studentName = parts[1];

// 結果をログに出力
Logger.log("学籍番号: " + studentId);
Logger.log("生徒名: " + studentName);
}

例2:複数のフォルダから情報を抽出してスプレッドシートに書き出す

複数の生徒のフォルダから情報を抽出し、スプレッドシートに一覧として書き出す例です。

function recordStudentGrades() {
// 成績管理フォルダのID
const parentFolderId = "parent_folder_id";
// スプレッドシートのID
const spreadsheetId = "spreadsheet_id";

// スプレッドシートを取得
const ss = SpreadsheetApp.openById(spreadsheetId);
// シートを取得
const sheet = ss.getSheetByName("成績一覧");

// 親フォルダを取得
const parentFolder = DriveApp.getFolderById(parentFolderId);
// 親フォルダ内のフォルダをすべて取得
const folders = parentFolder.getFolders();

// ヘッダー行を書き込む
sheet.appendRow(["学籍番号", "生徒名", "合計点"]);

// フォルダを順番に処理
while (folders.hasNext()) {
const folder = folders.next();
const folderName = folder.getName();
const parts = folderName.split("_");
const studentId = parts[0];
const studentName = parts[1];

// 各生徒のフォルダから成績を取得する処理(ここでは省略)
const totalScore = getTotalScore(folder);

// スプレッドシートに書き込む
sheet.appendRow([studentId, studentName, totalScore]);
}
}

// 各生徒のフォルダから成績を取得する関数(例)
function getTotalScore(folder) {
// ここにフォルダ内のファイルから成績を読み取る処理を記述
// 例:特定のファイル名を持つドキュメントから成績を読み取る
return 85; // ダミーの合計点
}

例3:課題の提出状況を管理する

各生徒のフォルダ内に課題ファイルが提出されているかどうかを確認し、未提出の生徒を特定する例です。

function checkAssignmentSubmissions() {
// 課題管理フォルダのID
const parentFolderId = "parent_folder_id";
// スプレッドシートのID
const spreadsheetId = "spreadsheet_id";

// スプレッドシートを取得
const ss = SpreadsheetApp.openById(spreadsheetId);
// シートを取得
const sheet = ss.getSheetByName("課題提出状況");

// 親フォルダを取得
const parentFolder = DriveApp.getFolderById(parentFolderId);
// 親フォルダ内のフォルダをすべて取得
const folders = parentFolder.getFolders();

// ヘッダー行を書き込む
sheet.appendRow(["学籍番号", "生徒名", "提出状況"]);

// フォルダを順番に処理
while (folders.hasNext()) {
const folder = folders.next();
const folderName = folder.getName();
const parts = folderName.split("_");
const studentId = parts[0];
const studentName = parts[1];

// 課題ファイルが存在するか確認
const assignmentFile = folder.getFilesByName("課題.pdf");
const isSubmitted = assignmentFile.hasNext();

// 提出状況をスプレッドシートに書き込む
const submissionStatus = isSubmitted ? "提出済" : "未提出";
sheet.appendRow([studentId, studentName, submissionStatus]);
}
}

よくある問題とトラブルシューティング

  • フォルダIDが間違っている: DriveApp.getFolderById() で指定するフォルダIDが正しいか確認してください。
  • フォルダ名が期待する形式と異なる: split() で分割する際の区切り文字や、フォルダ名の形式が想定通りか確認してください。
  • 権限エラー: スクリプトがDriveへのアクセス権を持っているか確認してください。

カスタマイズ方法と応用例

  • エラー処理の追加: フォルダが存在しない場合や、フォルダ名が不正な形式の場合のエラー処理を追加することで、より堅牢なスクリプトにできます。
  • ファイル名からの情報抽出: Folder.getName() と同様に、File.getName() を使用して、ファイル名から情報を抽出することも可能です。
  • トリガー設定: フォルダが作成された際や、ファイルがアップロードされた際に自動的にスクリプトが実行されるようにトリガーを設定できます。

まとめ

Folder.getName() 関数を活用することで、学校における成績管理を大幅に効率化できます。この記事で紹介したコード例を参考に、ぜひご自身の業務に合わせたカスタマイズを試してみてください。

PR

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

CodeCampで理想の働き方を実現しよう