見出し画像

GAS×Classroom①新しいクラスの作成|イチからDX


はじめに

課題背景

ロカリアではGoogle Classroomを使って研修やワークショップのコンテンツを受講者様へご提供しています。
何パターンかテンプレとなるクラスがあって、同じものを用意してチームごとにクラスへ招待する形となるのですが、デフォルトのコピー機能がいまいち意図した通りに動いてくれないのが現状です。

デフォルトのクラスをコピーする機能。
複製しなくて良い添付ファイルまで複製されてしまったり、
ファイルのアクセス権限が変わってしまったり…😥

そこで全体のタスクの半分でも良いからGASで自動化してみよう、というのが今回の趣旨でございます🐰💡

やりたいこと

増えたり減ったり(諦めたり)するかもしれませんが、
こちらの記事では一つ目の「新しいクラスの作成」について紹介します。

そこそこの頻度でコンテンツ等にアップデートがかかるので、エンジニアの方に頼らずアシスタントだけでメンテナンスが可能な範囲で自動化できればと思っております🐰🥕


実行環境

今回ご紹介するコードはこちらの環境下で作成しています。ご参考までに。

  • GASを実行するアカウントと教師として参加するアカウントは同一のもの(GoogleWorkspaceの管理者権限所有)を使用します

  • 必要なデータやファイルはすべて上記アカウントのマイドライブ内に格納します


用意するもの

❶スプレッドシート

「教師1」が先ほど述べたGASを実行するアカウントでかつ管理者権限を持つアカウントです。なお、GASを実行する前に会社名やプログラムを人手で書き換えることを想定しています。

ちなみに、一度に複数クラスを作成したい方はこちらのサイトを参照ください。
https://www.fy1203.com/2021/03/24/spreadsheet-classroom/#Google_Classroom


❷Google Classroom API

Apps Scriptを開いたら「Google Classroom API」を追加してください。

1.「サービス」の横の「+」ボタンをクリック
2.Google Classroom APIを選択して「追加」をクリック


新しいクラスの作成

新しいクラスを作る際のこちらの画面での入力を自動化します。

いくつか補足説明をしますので、必要な方は最後までご覧ください🐰🌸

function workshop() {
  //開いているスプレッドシート取得
  const spreadsheet = SpreadsheetApp.getActive();
  
  //該当シート指定
  const sheet = spreadsheet.getSheetByName('入力シート'); //シート名

  //会社名を取得
  const company = sheet.getRange('B1').getValue(); //セル番地
  Logger.log(company);

  //プログラム名取得
  const program = sheet.getRange('B2').getValue(); //セル番地
  Logger.log(program);  

  //クラスの説明取得
  const memo = sheet.getRange('B3').getValue(); //セル番地
  Logger.log(memo);  

  //教師1のメールアドレス
  const teacher = sheet.getRange('B5').getValue(); //セル番地
  Logger.log(teacher);  

  //クラスルーム生成に必要な各要素の指定
  const course = Classroom.newCourse();

    course.name = program; //部屋の名前(必須項目)
    course.ownerId = teacher; //オーナー(必須項目)
    course.section = company; //セクション
    course.description = memo; //クラスの説明
    course.courseState = 'ACTIVE'; //コースの状態指定
  
  //クラスルーム生成
  const newroom = Classroom.Courses.create(course);


補足説明

会社名等が入力されているシートを指定します。シート名は「”」あるいは「'」で囲んでください。

  //該当シート指定
  const sheet = spreadsheet.getSheetByName('入力シート'); //シート名

セル番地は「'」で囲んでください。Logger.log()は正しく情報が取得出来たかどうかを実行ログで確認するために入れていますが、削除しても問題ありません。

  //会社名を取得
  const company = sheet.getRange('B1').getValue(); //セル番地
  Logger.log(company);

ここまでに取得したデータと各要素(クラス名、セクション、教師等)を紐付けるイメージです。
※ownerIdについては、GoogleWorkspaceの管理者権限でない場合に少し制限がかかるようなので注意してください(→詳細こちら)。
※courseStateについて、現段階での想定では自動化出来なかった部分を人手で補完した後、受講者様の招待は手動で行う予定のため、ACTIVEで問題ないかなと思っていますが後々修正するかもしれません(→詳細こちら)。

  //クラスルーム生成に必要な各要素の指定
  const course = Classroom.newCourse();

    course.name = program; //部屋の名前(必須項目)
    course.ownerId = teacher; //オーナー(必須項目/ドメイン管理者を指定あるいはドメイン管理者が他ユーザーを指定)
    course.section = company; //セクション
    course.description = memo; //クラスの説明
    course.courseState = 'ACTIVE'; //コースの状態指定
  
  //クラスルーム生成
  const newroom = Classroom.Courses.create(course);

クラス名と教師役のアカウントの指定は必須条件ですのでご注意ください。また、今回「科目」と「部屋」は指定しませんでしたが、入力させたい場合には下記を参照ください。


さいごに

まずは新しいクラスの作成が出来ないと始まりませんからね🤗
まだまだこれからですが無事に成功して安心しました。

ClassroomのGASに関する日本語の記事が少ないというお話しを以前エンジニアの方から伺っていたのですが、ここ2年のオンライン化の流れか、学校の先生方が書かれたような記事がいくつか見つかりました。

次回はクラスID等の取得を行います。またお会いしましょう🐰🥕

𖡼.𖤣𖥧𖡼.𖤣𖥧𖡼.𖤣𖥧𖡼.𖤣𖥧𖡼.𖤣𖥧𖡼.𖤣𖥧𖡼.𖤣𖥧𖡼.𖤣𖥧𖡼.𖤣𖥧
シリーズ一覧はこちら

𖡼.𖤣𖥧𖡼.𖤣𖥧𖡼.𖤣𖥧𖡼.𖤣𖥧𖡼.𖤣𖥧𖡼.𖤣𖥧𖡼.𖤣𖥧𖡼.𖤣𖥧𖡼.𖤣𖥧

この記事が気に入ったらサポートをしてみませんか?