こんにちは!GoogleAppsScriptを使った業務効率化に夢中の初心者プログラマー、太郎です。
今日はGoogleAppsScript(GAS)を用いてClassroomに生徒を招待する方法について書いていきたいと思います。
初心者向けですが、javascriptの基本的なルールは押さえておいた方が理解はしやすいと思いますので、まだの方はProgateでサクッとjavascriptの文法を学習してみてください。
また、初心者が手当たり次第にコードを書いてみて詰まったところやその時の心の声などもつらつらと書いています。やり方のみさっと知りたい方は、最後のまとめを参照ください。
また、ReferenceError: Classroom is not defined
とエラーが出てしまった方は、こちらの記事を参考にしてみてください。
では、早速トライしていきましょう!
スプレッドシートから生徒リストを取得する
まずはスプレッドシートから生徒のIDを取得します。
欲しいデータは
列の2行目から8行目に格納されているので、その範囲のデータを取得しましょう。
function createCourseWork () {
var studentListSheetUrl = '取得したいスプレッドシートのURL';
var studentListSheet = SpreadsheetApp.openByUrl(studentListSheetUrl).getSheetByName('取得したいシート名');
var studentList = studentListSheet.getRange(2, 1, 7, 1).getValues().flat();//取得したい範囲のデータを取得し、1次元の配列に変える
}
これで変数studentList
に生徒のメールアドレスの配列を取得できました。studentListの中を出力すると
[××××@gmail.com, ××××@gmail.com,・・・]
こんな感じで1次元の配列になっています。
flat()
を付けないと、[[××××@gmail.com], [××××@gmail.com],・・・]
こんな感じで配列の中に配列がある、2次元配列になってしまうんですね。課題を配布する生徒を指定するstudentIds
には1次元の配列を入れるので、そのままだと入れられないんです。そんなわけでflat()
で1次元配列にしてあげましょう。
取得した生徒IDから課題を配布する
さて、IDを取得出来たら、あとはClassroomで指定した生徒に課題を配布する方法に書いた通りで良く、studentId
に取得したstudentListを渡してあげれば課題が配布できます。
function createCourseWork () {
var studentListSheetUrl = '取得したいスプレッドシートのURL';
var studentListSheet = SpreadsheetApp.openByUrl(studentListSheetUrl).getSheetByName('取得したいシート名');
var studentList = studentListSheet.getRange(2, 1, 7, 1).getValues().flat();//取得したい範囲を指定
var targetCourseId = '××××'//課題を配布するコースのIDを入力
var createAssignment = {
title: '××××',//配布する課題のタイトルを入力
state: 'PUBLISHED',
workType: 'ASSIGNMENT',
materials: [{
"driveFile": {
"driveFile": {"id": "××××"},//課題として配布するファイルのIDを取得
"shareMode": 'STUDENT_COPY'
}
}],
assigneeMode: "INDIVIDUAL_STUDENTS",
individualStudentsOptions: {
"studentIds": studentList//スプレッドシートから取得した生徒のIDリストを渡す
}
};
Classroom.Courses.CourseWork.create(createAssignment, targetCourseId);
}
以上、参考になれば嬉しいです。Google Classroom APIは日本語の情報が少ないため、今後も様々トライしてみた結果を記事に書いていきたいと思います!