Classroom API 経由で提出物の返却を試してみました
提出物を返却する際はコメントもつけると思いますが
提出物にプライベートコメントをつける API は用意されていないようです(2025-04-30現在)
そのためここでは API で提出物の返却のみを行う実験をしました
提出物を返却するために必要な情報
- courseId: Google ClassroomのAPIで使う courseId の数字を知りたい
- courseWorkId: Google Classroom API でcourseWorkの一覧(title, id)を取得したい
- submissionId: Google Classroom API で指定した課題の提出物一覧を取得したい
Apps Script の Serviceに Classroom API を追加する Advanced Service 経由では 404 で失敗しましたが
UrlFetch で Classroom API にリクエストを送ると成功しました
※ UrlFetch の方でも課題を作成したときと同じ Apps Script のプロジェクトで実行しないと OAuthクライアントが異なるため失敗します
UrlFetch で Classroom API にリクエストを送って成功したコード
Code.gs
function returnSubmissionUrlFetch() {
const courseId = "699141862609"; // クラスID
const courseWorkId = "776715772295"; // 課題ID
const submissionId = "Cg4I0Nr04LoWEIfD-L7NFg"; // 提出物ID
const accessToken = ScriptApp.getOAuthToken();
const url = [
'https://classroom.googleapis.com/v1',
`courses/${courseId}`,
`courseWork/${courseWorkId}`,
`studentSubmissions/${submissionId}:return`
].join('/');
const options = {
method: "post",
contentType: "application/json",
headers: {
Authorization: `Bearer ${accessToken}`
},
payload: JSON.stringify({}),
muteHttpExceptions: true
};
try {
const response = UrlFetchApp.fetch(url, options);
const responseCode = response.getResponseCode(); // ← ここでステータスコード取得!
if (responseCode === 200) {
Logger.log(`返却成功!ステータスコード: ${responseCode}`);
} else {
Logger.log(`返却失敗!ステータスコード: ${responseCode}`);
Logger.log(response.getContentText()); // エラー内容も出す
}
} catch (e) {
Logger.log('返却失敗: ' + e.message);
}
}
実行すると対象の提出物の返却が成功して 200 が返ってきました
Tips: Advanced Service 経由では 失敗した
Apps Script のサービスに Google Classroom API を追加するのが Advanced Service だと理解していますが
これを使って提出物を返却しようとして失敗したコードも共有します
Code.gs: これは404で失敗する
function returnSubmission() {
const courseId = '699141862609';
const courseWorkId = '776715772295';
const submissionId = 'Cg4I0Nr04LoWEIfD-L7NFg';
try {
const response = Classroom.Courses.CourseWork.StudentSubmissions.return(
courseId,
courseWorkId,
submissionId,
{} // 必須の空オブジェクト
);
Logger.log('返却成功!');
Logger.log(response);
} catch (e) {
Logger.log('返却エラー: ' + e.message);
}
}
実行するとエラーが発生して 404 が返ってきました
課題を作成したときと同じ Apps Script のプロジェクトで実行していても失敗しました
ちなみに
ここでは特にプロジェクトの変更はしておらず
デフォルトの GCP プロジェクトを使っています
もしかしたら標準の GCP プロジェクトに切り替えると 404 が返らずに成功するのかもしれません(これは試していないので未確認)
Reference
REST Resource: courses.courseWork.studentSubmissions
https://developers.google.com/workspace/classroom/reference/rest/v1/courses.courseWork.studentSubmissions
Method: courses.courseWork.studentSubmissions.return
高度な Google サービス
Advanced Google services
関連記事