DriveApp.getFolderByIdで実現する教育現場の課題配布効率化
教育現場では、生徒への課題配布、提出状況の管理、成績評価など、多くの業務に時間が費やされています。特に、大量の生徒を抱える場合、これらの業務は非常に煩雑になり、教員の負担を増大させる要因となります。本記事では、Google Apps Script(GAS)のDriveApp.getFolderById
関数を活用して、これらの課題を解決し、教育現場における課題配布と管理を効率化する方法を解説します。
DriveApp.getFolderById関数の基本
DriveApp.getFolderById
は、指定されたIDを持つGoogleドライブのフォルダを取得するためのGASの関数です。この関数を使用することで、特定のフォルダにアクセスし、その中のファイル操作(ファイルの作成、読み込み、更新、削除など)を自動化することができます。
構文:
DriveApp.getFolderById(id)
id
: フォルダのID(文字列)。GoogleドライブのURLから確認できます。
教育現場での利用シチュエーション:課題配布と管理
ここでは、DriveApp.getFolderById
関数を教育現場における課題配布と管理に活用する具体的な例を見ていきましょう。生徒ごとにフォルダを作成し、課題ファイルをそのフォルダに自動的に配置することで、課題の配布と提出状況の管理を大幅に効率化できます。
課題配布の自動化
生徒ごとにフォルダを作成し、課題ファイルをそのフォルダに自動的に配置するスクリプトです。
function distributeAssignments() {
// 課題が格納されているフォルダのID
const assignmentFolderId = "1abc2defGHI3jklMNO4pqrSTU5";
// 生徒データが記載されたスプレッドシートのID
const studentDataSpreadsheetId = "6vwx7yzABC8defGHI9jklMNO0";
// スプレッドシートから生徒のリストを取得
const sheet = SpreadsheetApp.openById(studentDataSpreadsheetId).getSheetByName("生徒リスト");
const studentData = sheet.getDataRange().getValues();
// 課題ファイルを取得
const assignmentFolder = DriveApp.getFolderById(assignmentFolderId);
const assignmentFiles = assignmentFolder.getFiles();
//生徒のヘッダー行をスキップ
for (let i = 1; i < studentData.length; i++) {
const studentId = studentData[i][0]; //生徒ID
const studentName = studentData[i][1]; //生徒名
//生徒個別のフォルダを作成(フォルダが存在する場合はスキップ)
let studentFolder;
try{
studentFolder = DriveApp.getFolderById(studentId);
} catch(e) {
studentFolder = DriveApp.createFolder(studentId);
}
// 課題ファイルを生徒のフォルダにコピー
while (assignmentFiles.hasNext()) {
const file = assignmentFiles.next();
file.makeCopy(file.getName(), studentFolder);
}
}
}
提出状況の確認
生徒のフォルダを検索し、課題ファイルの提出状況を確認するスクリプトです。
function checkSubmissionStatus() {
// 生徒のフォルダが格納されている親フォルダのID
const parentFolderId = "your_parent_folder_id";
const parentFolder = DriveApp.getFolderById(parentFolderId);
const studentFolders = parentFolder.getFolders();
let submissionStatus = {};
// 各生徒のフォルダをチェック
while (studentFolders.hasNext()) {
let folder = studentFolders.next();
let files = folder.getFiles();
let fileCount = 0;
while(files.hasNext()){
files.next();
fileCount++;
}
submissionStatus[folder.getName()] = fileCount > 0 ? "提出済み" : "未提出";
}
// 提出状況をログに出力(スプレッドシートに出力することも可能)
Logger.log(submissionStatus);
}
成績管理
提出された課題ファイルから成績を読み取り、スプレッドシートに記録するスクリプトです。
function recordGrades() {
// 提出された課題が格納されているフォルダのID
const submissionFolderId = "your_submission_folder_id";
// 成績を記録するスプレッドシートのID
const gradeSheetId = "your_grade_sheet_id";
// スプレッドシートを開く
const sheet = SpreadsheetApp.openById(gradeSheetId).getSheetByName("成績");
// 課題ファイルを取得
const submissionFolder = DriveApp.getFolderById(submissionFolderId);
const submissionFiles = submissionFolder.getFiles();
// 各課題ファイルを処理
while (submissionFiles.hasNext()) {
const file = submissionFiles.next();
const fileName = file.getName();
// ファイル名から生徒IDを抽出(ファイル名の形式に合わせて調整)
const studentId = fileName.split("_")[0];
// ファイルの内容を取得 (ファイルの種類に合わせて処理) ここではテキストファイルと仮定
const fileContent = file.getBlob().getDataAsString();
// スプレッドシートに成績を記録 (生徒IDをキーにして検索し、該当する行に成績を書き込む)
// ここでは簡単な例として、A列に生徒ID、B列に成績を記録すると仮定します
const lastRow = sheet.getLastRow();
let found = false;
for (let i = 1; i <= lastRow; i++) {
if (sheet.getRange(i, 1).getValue() == studentId) {
sheet.getRange(i, 2).setValue(fileContent); // 仮にファイルの内容を成績とする
found = true;
break;
}
}
if (!found) {
sheet.appendRow([studentId, fileContent]); //生徒が見つからない場合は新規に行を追加
}
}
}
よくある問題とトラブルシューティング
- フォルダIDが間違っている:
DriveApp.getFolderById
関数は、正しいフォルダIDが指定されないとエラーが発生します。フォルダIDを再度確認してください。 - 権限の問題: スクリプトがGoogleドライブにアクセスするためには、適切な権限が必要です。スクリプト実行時に権限を許可するか、プロジェクトの設定で権限を確認してください。
カスタマイズ方法と応用例
- 課題の種類に応じたフォルダ分け: 課題の種類(例:数学、英語)ごとにフォルダを作成し、さらに生徒ごとのフォルダを作成することで、より詳細な管理が可能になります。
- 課題の提出期限の設定: スプレッドシートに提出期限を記録し、期限を過ぎた課題を自動的に通知するスクリプトを作成することができます。
まとめ
DriveApp.getFolderById
関数を活用することで、教育現場における課題配布と管理を大幅に効率化することができます。本記事で紹介したコード例を参考に、ぜひGASを導入して、より効率的な教育活動を実現してください。
PR
CodeCampは、現役エンジニアからマンツーマンで学べるオンラインプログラミングスクールです。WebデザインやWebサービス開発、転職支援など、目的に合わせた多様なコースが選べます。
朝7時〜夜23時40分まで、365日レッスンが受けられるため、忙しい方でも自分のペースで学習を進めることが可能です。通過率8%の厳しい選考を通過した質の高い講師陣が、あなたのキャリアチェンジを強力にサポートします。
さらに、未経験者向けのカリキュラムや、学習開始から20日以内の全額返金保証制度もあるため、プログラミング学習に不安を感じている方でも安心して始めることができます。
CodeCampで理想の働き方を実現しよう