
前回に引き続き、Google Classroomの活用記事です。
基本的には、前回の記事を読んだ人向けの記事になっています。(GASを触ったことがある人であれば、この記事単発でも大丈夫です)
前回は、クラスを一括作成する方法を紹介しましたが、今回は、クラスの一覧表を作成する方法を紹介します。
*この記事を参考にしたことにより、ご利用者様、または第三者に損害・トラブル等が発生した場合でも、一切の責任を負いません。自己責任の上でのご利用をお願いいたします。
スプレッドシートを作る
まずは、スプレッドシートを用意してください。
前回の記事もお試しになっている場合は、そのファイルを使用できます。
用意できたら、コース情報という名前のシートを用意してください。
下記の画像と同じ内容にしてください。(一言一句同じである必要はありません)

左上のボタンは、挿入 → 図形描画で作成しました。こちらも、どんな見た目でも構いません。
スクリプトを貼り付ける+ボタンに割り当てる
下記のコードをスクリプトエディタに貼り付けてください。
前回の記事と同じスプレッドシートを使用している場合は、前回貼り付けたスクリプトの下に、今回のスクリプトを貼り付けてください。
/*********************************************** * コース情報一覧を作成する ***********************************************/ function listCourses() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("コース情報"); const select = Browser.msgBox("コース情報を抽出します。よろしいですか?", Browser.Buttons.OK_CANCEL); if (select == "cancel") { Browser.msgBox("キャンセルしました"); return; } sheet.getRange(5, 1, sheet.getMaxRows(), 15).clearContent() let continueSelect = "yes"; let procCnt = 0; const optionalArgs = {}; if ( sheet.getRange(2, 2).getValue() ){ optionalArgs.studentId = sheet.getRange(2, 2).getValue() }; if ( sheet.getRange(2, 3).getValue() ){ optionalArgs.teacherId = sheet.getRange(2, 3).getValue() }; if ( sheet.getRange(2, 4).getValue() ){ optionalArgs.courseStates = sheet.getRange(2, 4).getValue() }; if ( sheet.getRange(2, 5).getValue() ){ optionalArgs.pageSize = sheet.getRange(2, 5).getValue() }; while ( continueSelect == "yes" ) { const response = Classroom.Courses.list(optionalArgs); const courses = response.courses; const nextPageToken = response.nextPageToken; console.log(response); if (courses) { for ( let i = 0; i < courses.length; i++ ){ sheet.getRange(i + 5 + procCnt, 1).setValue(courses[i].id); sheet.getRange(i + 5 + procCnt, 2).setValue(courses[i].name); try { sheet.getRange(i + 5 + procCnt, 3).setValue(Classroom.Courses.Aliases.list(courses[i].id).aliases[0].alias); } catch(e) { // no alias } sheet.getRange(i + 5 + procCnt, 4).setValue(courses[i].section); sheet.getRange(i + 5 + procCnt, 5).setValue(courses[i].room); sheet.getRange(i + 5 + procCnt, 6).setValue(courses[i].ownerId); try { sheet.getRange(i + 5 + procCnt, 7).setValue(Classroom.UserProfiles.get(courses[i].ownerId).emailAddress); } catch(e) { sheet.getRange(i + 5 + procCnt, 3).setValue(e); } sheet.getRange(i + 5 + procCnt, 8).setValue(courses[i].courseState); sheet.getRange(i + 5 + procCnt, 9).setValue(courses[i].alternateLink); sheet.getRange(i + 5 + procCnt, 10).setValue(courses[i].enrollmentCode); sheet.getRange(i + 5 + procCnt, 11).setValue(courses[i].teacherGroupEmail); sheet.getRange(i + 5 + procCnt, 12).setValue(courses[i].courseGroupEmail); sheet.getRange(i + 5 + procCnt, 13).setValue(courses[i].teacherFolder.alternateLink); sheet.getRange(i + 5 + procCnt, 14).setValue(courses[i].creationTime); sheet.getRange(i + 5 + procCnt, 15).setValue(courses[i].updateTime); } } else { Browser.msgBox("対象データがありませんでした。"); return; } SpreadsheetApp.flush(); if ( nextPageToken ) { procCnt += optionalArgs.pageSize; optionalArgs.pageToken = nextPageToken; continueSelect = Browser.msgBox("他にもデータがあります。引き続き抽出しますか?", Browser.Buttons.YES_NO); } else { continueSelect = "no"; } } Browser.msgBox("処理が終了しました。"); }
そして、スプレッドシート上のコース情報抽出ボタンにlistCoursesを割り当ててください。
実行してみる
完成したので、早速コース情報抽出ボタンを押してみます。


無事、クラスの一覧が抽出できました。
ちなみに、画面上部の検索条件欄で、条件を絞り込むことができます。
学生ID or Email | 指定した学生が参加しているコースのみ抽出できます。 ID、メールアドレス、me のいずれかを入力してください。 |
教員ID or Email | 指定した教員が参加しているコースのみ抽出できます。 ID、メールアドレス、me のいずれかを入力してください。 |
ステータス | 抽出するクラスのステータスを指定できます。 ACTIVE、ARCHIVED、PROVISIONED、DECLINEDのいずれかを入力してください。 (この4つを「データの入力規則」に設定しておくと便利です) |
抽出件数 | 抽出する件数を指定できます。 対象クラスが多いと、結構処理が重くなるので、必要に応じて指定してください。 |
おわりに
いかがでしたでしょうか。参考になれば幸いです。
次回は、クラスのステータス一括変更、クラスの一括削除について紹介したいと思います。
コメント