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

2025年4月30日水曜日

Google Classroom APIの実行環境が課題の提出物を変更できるか確認したい


Classroom API で提出物に変更を加えることができるのは

その課題を作成したときと同じ OAuthクライアント(Developer Console Project)のみのようです

そのため

提出物に変更を加えるコードを記述した OAuthクライアントと

その提出物に紐づく課題を作成した OAuthクライアントが

同じかどうか確認する方法を知りたくて試しました


基本的には同じ Apps Script のプロジェクトで

課題の作成と提出物の読み書きを行えばよさそう




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

checkDeveloperAssociation() を実行すると

ture か false が返ってくるはずですが

手元の環境では true か undefined が返ってきました


Code.gs
function checkDeveloperAssociation() {
const courseId = '699141862609';
const courseWorkId = '767848967890';

// Advanced Service で取得
const cw = Classroom.Courses.CourseWork.get(courseId, courseWorkId);

// associatedWithDeveloper が true なら「同じクライアント」で作成された課題
Logger.log('associatedWithDeveloper: ' + cw.associatedWithDeveloper);
}


true が返ってきたら同じOAuthクライアントということらしい


別の Apps Script プロジェクトで同じコードを実行すると 
undefined が返ってきたので OAuthクライアントが異なると考えられる



Tips

提出物を返却する場合は上記のコードを実行して associatedWithDeveloper が true でも
404 エラーが出ました

この場合は
UrlFetch で REST API に直接リクエストを送ることでエラーを回避できました
Google Classroom APIで提出物の返却を試してみる



Reference

生徒の回答を管理する
https://developers.google.com/workspace/classroom/guides/manage-coursework?hl=ja#manage_student_responses


関連記事



Latest post

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

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