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 Formsでセクションの中にタイトルと説明を追加したい(addSectionHeaderItem)

今回はセクションの中に「タイトルと説明を追加」してみます フォームの編集画面 題名と説明を書くブロックが追加されます 今回の例では以下のように入力します 題名: SectionHeader 説明: Please answer the following questions. フォ...