既存の課題を個別の生徒に割り当てるために必要な情報
下記 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