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

2025年4月30日水曜日

Google Classroom APIで提出物の返却を試してみる


Classroom API 経由で提出物の返却を試してみました

提出物を返却する際はコメントもつけると思いますが

提出物にプライベートコメントをつける API は用意されていないようです(2025-04-30現在)


そのためここでは 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 が返らずに成功するのかもしれません(これは試していないので未確認)


高度な Google サービス




関連記事


Latest post

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

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