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

2025年4月30日水曜日

Google Classroom API で課題の割り当て先を指定したい


既存の課題を個別の生徒に割り当てるために必要な情報



下記 Code.gs の課題を個別の生徒に割り当てる場合

courseId, courseWorkId, studentIds の値を自身の環境に合わせて書き換えて

modifyCourseWorkAssignees() を実行すると

studentIds に設定した生徒にだけ課題が割り当てられます




Code.gs
function modifyCourseWorkAssigneesWithPaging() {
const courseId = '699141862609'; // 対象のクラスID
const courseWorkId = '767848967890'; // 対象の課題ID

// 1) まず全生徒の userId をページングで取得
const allIds = [];
let pageToken = null;
do {
const res = Classroom.Courses.Students.list(courseId, {
pageSize: 100, // 一度に取得する最大件数(最大 1000 まで指定可)
pageToken: pageToken
});
(res.students || []).forEach(s => allIds.push(s.userId));
pageToken = res.nextPageToken;
} while (pageToken);

// 2) ここで「割り当てたい生徒」の userId を列挙
const assignStudentIds = [
'12345678901234567890',
'09876543210987654321'
];

// 3) それ以外の userId を削除リストに
const removeIds = allIds.filter(id => !assignStudentIds.includes(id));

// 4) modifyAssignees 用リクエスト
const req = {
assigneeMode: 'INDIVIDUAL_STUDENTS',
modifyIndividualStudentsOptions: {
addStudentIds: assignStudentIds,
removeStudentIds: removeIds
}
};

// 5) 実行
try {
const updated = Classroom.Courses.CourseWork.modifyAssignees(
req,
courseId,
courseWorkId
);
Logger.log('更新成功: assigneeMode=' + updated.assigneeMode);
} catch (e) {
Logger.log('更新失敗: ' + e.message);
}
}


成功すると実行ログに assigneeMode=INDIVIDUAL_STUDENTS と出力されます



Tips 1: 全員に割り当てたい


全員に割り当てたい場合は assigneeMode: 'ALL_STUDENTS' にします

function updateCourseWorkToAllStudents() {
const courseId = '699141862609';
const courseWorkId = '767848967890';

// 全員配布に切り替えるリクエストボディ
const req = {
assigneeMode: 'ALL_STUDENTS'
};

try {
const updated = Classroom.Courses.CourseWork.modifyAssignees(
req,
courseId,
courseWorkId
);
Logger.log('更新成功: assigneeMode=' + updated.assigneeMode);
} catch (e) {
Logger.log('更新失敗: ' + e.message);
}
}




Tips 2: 課題作成時に個別に割り当てたい


function createCourseWorkForIndividualStudents() {
const courseId = '699141862609';

const studentIds = [
'12345678901234567890',
'09876543210987654321'
];

const courseWork = {
title: '個別指定テスト課題',
description: '特定の生徒にだけ配布します。',
workType: 'ASSIGNMENT',
state: 'PUBLISHED',
maxPoints: 50,
assigneeMode: 'INDIVIDUAL_STUDENTS',
individualStudentsOptions: {
studentIds: studentIds
},
dueDate: { year: 2025, month: 6, day: 1 },
dueTime: { hours: 23, minutes: 59 }
};

const created = Classroom.Courses.CourseWork.create(courseWork, courseId);
Logger.log('作成成功: ID=' + created.id);
}



Tips 3: 課題作成時に全員に割り当てたい


function createCourseWorkForAllStudents() {
const courseId = '699141862609';

const courseWork = {
title: '全員配布テスト課題',
description: 'この課題はクラス全員に配布されます。',
workType: 'ASSIGNMENT',
state: 'PUBLISHED',
maxPoints: 100,
assigneeMode: 'ALL_STUDENTS',
dueDate: { year: 2025, month: 6, day: 1 },
dueTime: { hours: 23, minutes: 59 }
};

const created = Classroom.Courses.CourseWork.create(courseWork, courseId);
Logger.log('作成成功: 課題ID=' + created.id);
}


Reference

Method: courses.courseWork.modifyAssignees 


ModifyIndividualStudentsOptions


Latest post

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

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