GASでGoogle Classroom APIを使用する

Google Classroomの簡単な説明とGoogle Classroomの各種APIをGoogleAppsScriptで用いる際の手順および使用例を紹介します。

Google Classroomとは

Google Classroomとは、Googleの提供している教育サポートサービスです。

役割

Google Classroomでは「教師」と「生徒」の役割があり、できることが異なります。
「教師」と「生徒」はアカウント単位で権限が異なり、「生徒」のアカウントでは「クラス」の作成ができないなどの制限があります。
※「クラス」については後述します。

このアカウント単位の権限は、はじめてClassroomを利用する際にそれぞれ選択し、以降自分で自分の役割を変えることはできません。
もしも間違った役割を選んでしまった場合はGoogle Workspace管理者に設定を変更してもらう必要があります。
設定の変更方法についてはこちらをご確認ください:Google Classroomの役割変更

※後述のGAS作成では「教師」のアカウントが必要となるので、「教師」のアカウントをご用意いただきますようお願いします。

役割機能
教師アカウント〇 クラスの作成・管理
〇 クラスへ副担任として参加
〇 クラスへ生徒として参加
生徒アカウント✖ クラスの作成・管理
✖ クラスへ副担任として参加
〇 クラスへ生徒として参加

※副担任については後述

クラス

「クラス」とは「教師」アカウントが作成できる教室のようなもので、課題のやり取りやお知らせの共有ができます。
作成した「クラス」に「生徒」を招待し、「生徒」がクラスに参加することで「クラス」の内容が共有されるようになります。

下図は「教師」と「生徒」それぞれから見たクラスの機能の例です。

また、前項の表の通り「教師」権限を持つアカウントも他「クラス」へ「生徒」として参加することができます。

そして「クラス」内における「教師」の役割には、担任と副担任という分類があります。
これはどちらも「教師」の権限を持つアカウントだけがなれるもので、担任はそのクラスの作成者、副担任はクラスに教師として招待された場合になります。

クラス内での役割別の機能は主にこのようになります。

クラス内での役割機能
担任(クラスを作成した教師)〇 クラス削除
〇 生徒や教師の招待・削除
〇 課題やテストなどの作成・管理
〇 お知らせの投稿、質問やコメントの管理
副担任(教師として招待された教師)✖ クラス削除
〇 生徒や教師の招待・削除
〇 課題やテストなどの作成・管理
〇 お知らせの投稿、質問やコメントの管理
生徒〇 クラスへの参加
〇 課題の提出・回答
〇 お知らせの閲覧、質問やコメントの投稿

2. GASへのGoogle Classroom APIの導入方法

Google ClassroomはAPIが公開されており、GASでも簡単に利用することができます。
Google Classroom API公式

APIとは:

API(Application Programming Interface)とは、あるサービスの機能などを外部から利用できるようにする窓口のようなものです。
「APIが公開されている」というのは、そのサービスの機能を他のアプリケーション等から使うことができるということです。
今回の場合はGoogle Classroomというサービスの機能(例えば「クラスを作成する」という機能)をGASという外部のアプリケーションから実行するための窓口(API)がある、ということです。
※ClassroomもGASも同じくGoogleの提供しているものですが、サービス・アプリケーションとしては別個の独立したものなので、APIという窓口が必要になっています。

(1) GASの用意

まずはGASファイルを用意します。
スプレッドシートなどに紐づいたGASでも、独立したGASでも構いません。

ひとまず今回は、次回以降での応用を見越して「スプレッドシートに紐づいたGAS」を用意することにします。
GASの準備については以前の記事の「スプレッドシートに紐づいたGASの作成方法」の項目を参考にしてください。

(2) Google Classroom APIの導入

GASでGoogle Classroom APIを使えるようにするためには、サービスとしてGoogle Classroom APIを追加する必要があります。

サービスの追加方法は簡単な方法と設定ファイルを用いる方法の2つの方法があります。
しかし、簡単な方法はお使いのアカウントの状態によって使えない場合があるため、その場合は少し手間になりますが設定ファイルを用いる方法をご利用ください。

まずは簡単な方法をご紹介します。

(2-A) 簡単なサービス追加の方法

  1. GASのエディターを開いた状態で「サービス」のプラスマークをクリックします。

サービスの候補から「Google Classroom API」を選択し、追加をクリックします。
※もしも候補に「Google Classroom API」がなかった場合は、設定ファイルを用いる方法をご利用ください。

エディターの「サービス」にClassroomが追加されていたら完了です。

(2-B) 設定ファイルを用いるサービス追加の方法

もしも簡単な方法で追加サービスの候補にGoogle Classroom APIが表示されていなかった場合は、こちらを参考にサービス追加を行ってください。

  1. GASの左側メニューから「プロジェクトの設定」を開きます。
  2. 「appsscript.json」マニフェスト ファイルをエディタで表示するにチェックをいれます。
  3. エディターに戻ると「appsscript.json」が表示されているので、クリックして開きます。
  4. 「appsscript.json」を下記のように編集し、保存します。
  5. 保存するとエディターの「サービス」にClassroomが追加されます。
  6. 「プロジェクトの設定」を開き「appsscript.json」マニフェスト ファイルをエディタで表示するのチェックをはずしておきます。
    ※不用意な編集の予防のためなので、必須ではありません。

GASへのGoogle Classroom APIの導入はこれで完了です。
次は、この追加したGoogle Classroom APIの使い方をご紹介します。

(3) 追加したサービスの使い方

追加したGoogle Classroom APIの使い方はとても簡単です。

GASではClassroomから始まる各種関数をでAPIを実行します。
各種関数についてはGoogle Classroom API公式-リファレンスをご参照ください。

APIの簡単な使用例について次項でご紹介します。

3. Google Classroom APIの使用例

実際にGASでGoogle Classroom APIを使ってみたいと思います。
今回は簡単な例として「クラスの作成」をしてみましょう。

まずは「教師」の権限を持ったアカウントのご用意をお願いします。

GASのコード

公式のサンプルをベースに作成していきたいと思います。
下記は公式の「クラス作成」サンプルそのままです。

function createCourse() {
  var course = {
    name: '10th Grade Biology',
    section: 'Period 2',
    descriptionHeading: 'Welcome to 10th Grade Biology',
    description: "We'll be learning about about the structure of living creatures from a combination of textbooks, guest lectures, and lab work. Expect to be excited!",
    room: '301',
    ownerId: 'me',
    courseState: 'PROVISIONED'
  };
  var course = Classroom.Courses.create(course);
  Logger.log('Course created: %s (%s)', course.name, course.id)
}

このままでも実行は可能ですが、わかりやすく日本語で整えてみたものが下記になります。

function createCourse() {
  var course = {
    name: '【クラスの名前】',
    section: '【セクション名】',
    descriptionHeading: '【クラスの説明のタイトル】',
    description: "【クラスの説明文】",
    room: '【部屋の名前】',
    ownerId: 'me',
    courseState: 'PROVISIONED'
  };
  var course = Classroom.Courses.create(course);
  Logger.log('Course created: %s (%s)', course.name, course.id)
}

それぞれの項目が設定しているものについては、後程作成されたクラスの内容と照らし合わせてみるのがわかりやすいかと思います。
ownerIdは自分を指定する意味のmeを設定します。
courseStateはクラスの状態の設定で、クラス作成の際には承諾待ちを意味するPROVISIONEDしか指定できません。

実行結果

実行結果として、GASの実行ログには「作成されたクラスの名前」と「クラスID」が表示されます。

作成されたクラス

実際にGoogle Classroomに作成されたクラスを見てみましょう。
先ほどのGASで作成した【クラスの名前】というクラスができていますね。

しかしGASから作成されたクラスは、この時点ではまだアクティブな状態ではなく、担任(クラスを作成した人)の承諾が必要な状態です。
Google Classroomの画面上からクラスを作成する時はこのフェーズがないので注意が必要です。
承諾を押し、クラスをアクティブな状態にしてあげましょう。

アクティブ化したクラスを開くとこのような画面が表示されます。
右上の歯車マークからクラスの設定を見てみましょう。

先ほどのGASコードで設定した項目が反映されています。

descriptionHeading【クラスの説明のタイトル】については、どこに反映されているのか現状ではわかりませんでした。
もし反映場所がわかったら改めて紹介したいと思います。

また、「科目」については現時点ではGAS(Google Classroom API)では設定できないようでした。
なので今はGoogle Classroomの画面上から設定するしかないようです。
もし今後追加されたら改めて紹介したいと思います。

function createCourse() {
  var course = {
    name: '【クラスの名前】',
    section: '【セクション名】',
    descriptionHeading: '【クラスの説明のタイトル】',
    description: "【クラスの説明文】",
    room: '【部屋の名前】',
    ownerId: 'me',
    courseState: 'PROVISIONED'
  };
  var course = Classroom.Courses.create(course);
  Logger.log('Course created: %s (%s)', course.name, course.id)
}

まとめ

今回はGoogle Classroomの概要とGASへのGoogle Classroom APIの導入方法、GASでの実際の使用例をご紹介しました。
Google Classroom APIは多くの機能が実装されています。
今回紹介したクラスの作成はもちろん、クラスへの副担任・生徒の招待、課題の作成、お知らせの投稿などもGASで自動化することができます。
それらについても今後紹介していきたいと思います。

Google Cloudの導入は当社にご相談ください

ITディストリビューターであるTD SYNNEXはGoogle Cloud™ Partner Award を受賞するなど、長年にわたりGoogle™のグローバル認定ディストリビューターとして、総合的な Googleソリューションを提供しています。お客様にとって最適なソリューションの提案や導入、活用をサポートします。

製品・サービスについてのお問合せ

情報収集中の方へ

導入事例やソリューションをまとめた資料をご提供しております。

資料ダウンロード
導入をご検討中の方へ

折り返し詳細のご案内を差し上げます。お問い合わせお待ちしております。

お問い合わせ