Apps Scriptリファレンス: Apps Script Reference |障害・課題追跡: IssueTracker |Google Workspace: Status Dashboard - Summary

2025年4月29日火曜日

Google ClassroomのAPIで課題の採点を試してみる


Classroom のAPI で課題の採点をする場合:
基本的には課題を作成した Oauthクライアントで実行します


対象の課題が Apps Script で作成された場合:
  • 作成した時と同じ Apps Script プロジェクト経由でのみ採点できる
  • 異なる Apps Script プロジェクトでは採点する権限がない
    • 以下のようなエラーになる
    • API call to classroom.courses.courseWork.studentSubmissions.patch failed with error: @ProjectPermissionDenied The Developer Console project is not permitted to make this request.

Classroom に手動で作成した課題の場合:
  • API で採点できない



下記 Code.gs の courseId, courseWorkId, targetStudentUserId を自身の環境に合わせて書き換えて
課題を作成したときと同じ OAuthクライアントで
gradeSubmission() を実行すると
grade の値が課題の点数のフィールドに入ります



Code.gs
function gradeSubmission() {
const courseId = "699141862609"; // クラスID
const courseWorkId = "699240702520"; // 課題ID
const targetStudentUserId = "1234567890"; // 生徒のuserId
const grade = 6; // 一括してスコア設定

try {
const response = Classroom.Courses.CourseWork.StudentSubmissions.list(courseId, courseWorkId);
const submissions = response.studentSubmissions;

if (!submissions || submissions.length === 0) {
Logger.log('提出物がありません。');
return;
}

const targetSubmission = submissions.find(submission => submission.userId === targetStudentUserId);

if (!targetSubmission) {
Logger.log('指定された生徒の提出物が見つかりませんでした。');
return;
}

const submissionId = targetSubmission.id;

Logger.log(`見つかった提出物ID: ${submissionId}`);

// ここでgradeを使って設定!
const patchBody = {
assignedGrade: grade,
draftGrade: grade
};

const updatedSubmission = Classroom.Courses.CourseWork.StudentSubmissions.patch(
patchBody,
courseId,
courseWorkId,
submissionId,
{ updateMask: "assignedGrade,draftGrade" }
);
Logger.log(`採点成功!付けた点数: ${updatedSubmission.assignedGrade}`);

} catch (e) {
Logger.log('採点失敗: ' + e.message);
}
}






Reference

Resource: CourseWork
Manage student responses

Manage OAuth Clients


Latest post

Google Classroom API でクラスの一覧を取得したい

自分が指導・参加しているクラスの名称とIDを取得するコードを試しました 下記 Code.gs では pageSize で 100 を設定していますが 必ず 100件 返ってくるとは限らないらしいです https://developers.google.com/workspace/...