GmailMessage.starでGmailを成績管理に活用!GAS教育現場効率化
教育現場における成績管理は、時間と労力を要する重要な業務です。GmailMessage.starとGoogle Apps Script(GAS)を組み合わせることで、Gmailに届く課題の提出通知メールなどを自動的に解析し、スプレッドシートへの記録や集計を効率化できます。この記事では、GmailMessage.starを活用した成績管理の自動化について、具体的なコード例を交えながら解説します。
GmailMessage.starとは?
GmailMessage.starは、GASでGmailのメッセージを扱うためのクラスです。このクラスを使うことで、Gmailのメッセージの内容、送信者、件名、添付ファイルなどをプログラムで取得できます。取得した情報は、スプレッドシートへの書き込みや、特定の条件に合致するメールの自動処理などに活用できます。
教育現場でのGmailMessage.star活用:成績管理
教育現場では、学生からの課題提出や質問などがGmailでやり取りされることが多くあります。これらのメールを一つ一つ確認し、手動で成績管理シートに記録するのは大変な作業です。GASとGmailMessage.starを組み合わせることで、この作業を自動化し、先生方の負担を軽減できます。
課題提出メールの自動記録
学生からの課題提出メールを自動的に検出し、スプレッドシートに記録する例を見てみましょう。課題のタイトル、提出者の名前、提出日時などを自動で記録できます。
// スクリプトプロパティにスプレッドシートIDを保存
function recordAssignments() {
// スプレッドシートのIDを設定(各自のスプレッドシートIDに置き換えてください)
const spreadsheetId = PropertiesService.getScriptProperties().getProperty("SPREADSHEET_ID");
if (!spreadsheetId) {
Logger.log("スプレッドシートIDが設定されていません。スクリプトプロパティに設定してください。");
return;
}
// スプレッドシートを開く
const ss = SpreadsheetApp.openById(spreadsheetId);
const sheet = ss.getSheetByName("課題提出記録"); // シート名は適宜変更してください
// 検索条件の設定
const searchQuery = "subject:【課題提出】"; // 課題提出メールの件名を設定
const threads = GmailApp.search(searchQuery, 0, 50); // 最大50件まで検索
threads.forEach(thread => {
const messages = thread.getMessages();
messages.forEach(message => {
// 課題提出メールの情報を取得
const subject = message.getSubject();
const sender = message.getFrom();
const date = message.getDate();
// スプレッドシートに記録
sheet.appendRow([date, sender, subject]);
});
});
}
カスタマイズ方法:
searchQueryを変更することで、検索するメールの条件を調整できます。sheet.getSheetByName("課題提出記録")のシート名を変更することで、記録先のシートを変更できます。sheet.appendRow([date, sender, subject])に追加する情報を変更することで、記録する内容をカスタマイズできます。
成績管理シートへの自動入力
課題の提出状況を自動的に成績管理シートに入力する例です。学生の名前をキーにして、提出状況を更新します。
function updateGradeSheet() {
// スプレッドシートのIDを設定(各自のスプレッドシートIDに置き換えてください)
const spreadsheetId = PropertiesService.getScriptProperties().getProperty("SPREADSHEET_ID");
if (!spreadsheetId) {
Logger.log("スプレッドシートIDが設定されていません。スクリプトプロパティに設定してください。");
return;
}
const ss = SpreadsheetApp.openById(spreadsheetId);
const sheet = ss.getSheetByName("成績管理シート"); // シート名は適宜変更してください
// 学生の名前とメールアドレスの対応表(実際にはスプレッドシートから取得することを推奨)
const studentMap = {
"student1@example.com": "学生A",
"student2@example.com": "学生B"
};
// 課題の件名を設定
const assignmentSubject = "【課題提出】レポート";
// 検索条件の設定
const searchQuery = `subject:${assignmentSubject}`; // 課題提出メールの件名を設定
const threads = GmailApp.search(searchQuery, 0, 50); // 最大50件まで検索
threads.forEach(thread => {
const messages = thread.getMessages();
messages.forEach(message => {
// 課題提出メールの情報を取得
const sender = message.getFrom();
const studentName = studentMap[sender];
if (studentName) {
// 学生名に対応する行を探す
const data = sheet.getDataRange().getValues();
for (let i = 0; i < data.length; i++) {
if (data[i][0] === studentName) {
// 課題の提出状況を更新
sheet.getRange(i + 1, 2).setValue("提出済"); // B列を提出状況とする
break;
}
}
}
});
});
}
カスタマイズ方法:
studentMapに学生のメールアドレスと名前の対応を追加することで、対応する学生を増やせます。assignmentSubjectを変更することで、課題の件名を変更できます。sheet.getRange(i + 1, 2).setValue("提出済")の列番号を変更することで、提出状況を記録する列を変更できます。
よくある問題とトラブルシューティング
- メールが正しく検出されない: 検索条件(
searchQuery)が正しいか確認してください。件名が完全に一致しているか、日付の範囲が適切かなどを確認しましょう。 - スプレッドシートへの書き込みがうまくいかない: スプレッドシートIDが正しいか、シート名が正しいか確認してください。また、GASからスプレッドシートへのアクセス権限が付与されているか確認してください。
- タイムアウトが発生する: 処理するメールの件数が多すぎると、GASの実行時間が上限に達してタイムアウトが発生することがあります。検索する期間を短くしたり、処理するメールの件数を制限したりすることで、タイムアウトを回避できます。
カスタマイズ方法と応用例
- 課題の添付ファイルをGoogle Driveに自動保存する:
message.getAttachments()を使って添付ファイルを取得し、DriveApp.createFile()でGoogle Driveに保存できます。 - 課題の提出遅延者を自動でリストアップする: 締切日を過ぎた課題を提出していない学生を抽出し、メールで通知することができます。
- 定期的に実行する: GASのトリガーを設定することで、上記の処理を定期的に自動実行できます。例えば、毎日特定の時間に実行するように設定することで、常に最新の提出状況を把握できます。
まとめ
GmailMessage.starとGASを組み合わせることで、教育現場における成績管理業務を大幅に効率化できます。この記事で紹介したコード例を参考に、ぜひご自身の業務に合わせてカスタマイズし、活用してみてください。先生方の負担を軽減し、より教育に集中できる環境づくりに貢献できるはずです。
スクリプトプロパティの設定方法:
- GASエディタを開き、「プロジェクトの設定」をクリック
- 「スクリプトのプロパティ」にスプレッドシートID(SPREADSHEET_ID)を登録
// スクリプトプロパティにスプレッドシートIDを設定する方法(GASエディタで実行)
function setSpreadsheetId() {
const spreadsheetId = "YOUR_SPREADSHEET_ID"; // 実際のスプレッドシートIDに置き換えてください
PropertiesService.getScriptProperties().setProperty("SPREADSHEET_ID", spreadsheetId);
Logger.log("スプレッドシートIDをスクリプトプロパティに設定しました: " + spreadsheetId);
}
この関数を実行後、上記のスクリプトが動作します。

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