LoginSignup
4
3

More than 3 years have passed since last update.

【GAS】GoogleAppsScriptを用いてClassroomで指定した生徒に課題を配布する方法(CourseWork.create)

Last updated at Posted at 2021-02-04

こんにちは!GoogleAppsScriptを使った業務効率化に夢中の初心者プログラマー、太郎です。

今日はGoogleAppsScript(GAS)を用いてClassroomに生徒を招待する方法について書いていきたいと思います。

初心者向けですが、javascriptの基本的なルールは押さえておいた方が理解はしやすいと思いますので、まだの方はProgateでサクッとjavascriptの文法を学習してみてください。

また、初心者が手当たり次第にコードを書いてみて詰まったところやその時の心の声などもつらつらと書いています。やり方のみさっと知りたい方は、最後のまとめを参照ください。

また、ReferenceError: Classroom is not definedとエラーが出てしまった方は、こちらの記事を参考にしてみてください。
では、早速トライしていきましょう!

assigneeModeが使えそう

ClassroomでDriveの課題を配布する方法(CourseWork.create)の記事で書いたやり方を少しだけ帰れば行けそうな気がします。公式ドキュメントを確認すると、課題を作成するときに、すべての生徒に配布するか、個々の生徒に配布するか選べるキー、assigneeModeというものがあるみたい。この値として、ALL_STUDENTSを選べば、すべての生徒に配布できます。ちなみにこのモードがデフォルトみたいです。INDIVIDUAL_STUDENTSを選べば指定したの生徒一覧に課題を配布できそうです。
ただ、生徒の指定の仕方がここには書いていないですが、すぐ次にありますね!
individualStudentsOptionsというキーです。
先のassigneeMode="INDIVIDUAL_STUDENTS"のときのみ、指定した生徒一覧のみに課題を配布できるようです。
individualStudentsOptionsの中には、生徒IDを配列で渡せます。
こういうことですね。

individualStudentsOptions:{
  "studentIds": [studentid1, studentid2, studentid3, ・・・] 
}

それでは、GAS太郎とGAS次郎とGAS三郎の3名が参加しているこのクラスで、太郎と次郎にだけ課題を配布してみたいと思います(ネーミングセンスのなさには突っ込まないでください)。
スクリーンショット (71).png
とは言っても、以下の記事の課題を作成するときに渡すパラメータにassigneeModeindividualStudentsOptionsを加えてあげればいいだけのはず。
ClassroomでDriveの課題を配布する方法(CourseWork.create)

function createCourseWork() {
  var targetCourseId = '××××'//課題を配布するコースを選択
  var createAssignment = {
    title: '特定の生徒に課題を配布する',
    state: 'PUBLISHED',
    workType: 'ASSIGNMENT',
    materials: [{
      "driveFile": {
        "driveFile": {"id": "××××"}//課題として配布するファイルのIDを取得
        }
      }],
    assigneeMode: "INDIVIDUAL_STUDENTS",
    individualStudentsOptions: {
      "studentIds": ['××××@××××', '××××@××××']//GAS太郎とGAS次郎のgmailメールアドレスを入力
    }
  };
  Classroom.Courses.CourseWork.create(createAssignment, targetCourseId);
}

ではこれで実行してみましょう!
スクリーンショット (73).png
出来ました!!!太郎と次郎にのみ課題が配布されています!!!
いや~~~、新しいコースを作成したり削除するときにものすごく詰まったりしましたが、だんだんとClassroomのAPIに慣れてきたかもしれません!
最後、まとめます!

まとめ-Classroomで指定した生徒に課題を配布する方法

クラスルームで指定した生徒にのみ課題を配布したい場合は、CourseWork.createメソッドを実行するときにassigneeModeINDIVIDUAL_STUDENTSにしてindividualStudentsOptionsで配布したい生徒のメールアドレスを指定してあげればOKです!

function createCourseWork() {
  var targetCourseId = '××××'//課題を配布するコースを選択
  var createAssignment = {
    title: '○○○○',//課題のタイトルを入力
    state: 'PUBLISHED',
    workType: 'ASSIGNMENT',
    materials: [{
      "driveFile": {
        "driveFile": {"id": "××××"}//課題として配布するファイルのIDを入力
        }
      }],
    assigneeMode: "INDIVIDUAL_STUDENTS",
    individualStudentsOptions: {
      "studentIds": ['××××@××××', '××××@××××', '××××@××××', ・・・]//課題を配布したい生徒のアドレスを入力
    }
  };
  Classroom.Courses.CourseWork.create(createAssignment, targetCourseId);
}

以上、参考になれば嬉しいです。Google Classroom APIは日本語の情報が少ないため、今後も様々トライしてみた結果を記事に書いていきたいと思います!

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3