ラベル GAS の投稿を表示しています。 すべての投稿を表示
ラベル GAS の投稿を表示しています。 すべての投稿を表示

2021/06/22

【API】詳説 Google Classroom API(第3回 Guides:ガイド)

前回はトップページの見方について解説しました。
今回は、ガイドのページについて見ていきます。

Google Classroom API Guides

ガイドのトップページ


ページ左側の各カテゴリについて解説します。

・Get Started
    Google Classroomの概要、APIを利用できるドメイン、APIの概要、コースのエイリアス、リスト(コース名簿)の管理、課題の管理と学生の提出などが説明されています。

・Share to Classroom
    クラスルームの共有ボタンを作成できます。作成した共有ボタンをご自身のWebサイトに追加することで、ユーザーがコンテンツをクラスで共有し、サイトへのトラフィックを増やすことができます。

・Quickstart
    ガイドのページで最も大切な項目です。Go,Google Apps Script, Java、Pythonなど各言語ごとにAPIのセットアップおよびサンプルコードが記載されています。Google Apps Scriptのサンプルコードを実行すると、自身が所属している10コースの「コース名とコースID」が出力されます。

コース名とIDを取得するサンプルコード


・Using the API
    Quickstartの次に大切な項目といえます。以下のカテゴリごとに、サンプルコードが示されています。

    ①Manage Courses:コースを管理する
    コースは「M.スミスの第四期の数学」などのクラスを表します。各コースは、割り当てられた一意のIDによって識別されます。また、ページにある courses.create() メソッドを使用したサンプルコードを実行すると、新しいコースを作成できます。


コースを追加するサンプルコード(GAS)


    ②Manage Aliases:コースエイリアスを管理する
        Googleは、SIS(Student Information Systems:生徒情報システム)からコースを作成する場合やSISとコースをリンクする場合は常に、SISのコースIDをコースエイリアスとして使用することを推奨しています。SISやコースのエイリアスについては、別記事にて解説したいと思います。

    ③Manage Teachers and Students:教師と生徒を管理する
        ここではGASのサンプルコードが記載されていませんが、各メソッドの紹介があります。
    invitations.create() :招待状を送信します。招待者の参加同意が必要です。
    teachers.create() :ドメイン内に教師を直接追加できます(管理者のみ)。
    students.create() :ドメイン内に生徒を直接追加できます(管理者のみ)。
    students.delete() :指定したコースから学生を削除できます。
    courses.list() :コースのリストを取得します。取得範囲は教師と学生で異なります。
    userProfiles.get() :ユーザーID、メールアドレスなどの情報を取得します。

    ④Manage Classwork:授業課題を管理する
       Google Classroomは課題、テスト付き課題、質問等、5種類の授業方法があります。Classroom APIでは現在、3つ(課題、質問、資料)の操作が可能です。
        ここではGASのサンプルコードが記載されていませんが、この機能にアクセスするためのメソッドを解説しています。また、課題の割当管理については、studentSubmissionsで行います(詳細はリファレンスの回で解説します)。
    courses.courseWork.get() :特定の課題や質問を取得します。
    courses.courseWork.list() :全ての課題または質問を取得します。

    ⑤Manage Topics:トピックを管理する
        トピックとは、例えば課題や資料の類似度によって分類分けすることです。各トピックは、サーバーによって割り当てられた一意のIDによって識別されます。なお、GASのサンプルコードはありません。

    ⑥Managing Guardians:保護者を管理する
        保護者を設定すると、学生に与える課題等の情報をメールで受信できます。通常、学生ドメインのメンバーに属さない保護者は、保護者になるために自身のメールアドレスを使用して招待する必要があります。
       次の表は、ユーザーのタイプに応じて、保護者に対して実行できるアクションを示しています。

保護者の情報招待
閲覧変更閲覧/変更説明
学生××学生自身の保証人のみ可。
教師クラスの生徒については、管理者がドメインコンソールで有効にしている場合に可。
管理者ドメイン内の全ての学生に対して可。
注:保護者のメールアドレスは、管理者のみがアクセス可能です。

    ⑦Authorizing Requests:リクエストを承認する
        OAuth2.0のリクエスト承認について説明しています。


・Best Practices
    Classroom APIのプッシュ通知、バッチリクエスト、APIエラーの処理、API処理性能の向上について説明しています。

・Tutorials
    「Share to Classroom」にて説明のあったクラスルームの共有ボタンとCourseWork APIの違いについて説明しています。主に、両者における課題の割り当てに関する内容になります。

以上、今回はGoogle Classroom APIのガイドのページについて見ていきました。次回は、いよいよReference:リファレンスのページについて、解説したいと思います。

2021/04/30

【GAS】指定したコースの情報を取得する方法

先日、すべてのClassroomからクラスコードを一括でスプレッドシートに自動出力する方法 を取り上げました。
今回はすべてのコースではなく「指定した1つのコース情報を取得する方法」について、考えてみます。

Google Apps Scriptに以下のスクリプトをコピー&ペーストしてください。

function getCourse() {
  const courseId = '312347346819'; //コースのIDを入力
  const course   = Classroom.Courses.get(courseId);
  console.log(course);
}

courseIdは、冒頭「すべてのClassroomからクラスコードを一括でスプレッドシートに自動出力する方法」を参考にしながら、オブジェクトのプロパティは「id」を指定してみてください。
実行ログの結果として、以下が表示されます。

これで、指定した1つのコース情報を出力することできました。

How can I export an one of course information?
After obtaining the course ID of Classroom, try running the script described above.
However, keep in mind about the courseId is differenet from classcode(enrollmentCode).

2021/04/26

【GAS】スクリプトを実行して新しいコースを作成する方法

Google Apps Scriptで新しいコースを作成したい場合は、以下のスクリプトをコピー&ペーストで実行してください。
function createCourse() {
  const course = {
    id: 'p:テストコース',
    name: 'テストコース',
    section: '前期',
    descriptionHeading: 'テストコースにようこそ!',
    description: 'こちらはGASで作成したテストコースです。',
    room: '503教室',
    ownerId: 'me',
    courseState: 'PROVISIONED'
  };

  const response = Classroom.Courses.create(course);
  console.log(`Course created:${course.id},${course.name}`);
}

以下、各プロパティの説明です。
 
  id  
Classroomによって割り当てられたこのコースの識別子です。対応するエイリアスを作成できます。たとえば、「p:微分積分学」でOKです。

 name 
コースの名前。たとえば「微分積分学」。必須項目です。

 section 
コースセクション、例えば「前期」や「後期」など。

 descriptionHeading 
説明のオプションの見出しです。たとえば、「微分積分学へようこそ」などです。

 description 
オプションの説明です。たとえば、「教科書、資料を使って授業を進めます」などです。

 room 
教室の場所を指します。

 ownerId 
コースの所有者の識別子です。①ユーザーの数値識別子、②ユーザーのメールアドレス、③"me"要求しているユーザーを示す文字列リテラルのいずれかになります。必須項目です。

 courseState 
コースの状態です。指定しない場合、デフォルトの状態はPROVISIONEDになります。

コースはオブジェクトから作成できますので、スプレッドシートに入力した情報をオブジェクトとして取得すれば一括で作成も可能です。
近日中に、Classroomコースを一括で作成する方法を紹介できればと思います。

-------------
For a description of each create field, please refer to the links below.
https://developers.google.com/classroom/reference/rest/v1/courses

The course can be created from an object, so if you get some data in the spreadsheet as an object, you can also create courses in bulk. Actually I plan on dealing with it within a few days in this blog.

2021/04/25

【GAS】参加しているコースのクラスコードをスプレッドシートに自動で一括出力する方法

管理者がすべてのクラスコードを一括で自動出力したい場合や、自身が参加している全コースのクラスコードを一括出力したい場合には、以下のスクリプトを実行してください。
また、ログの出力はスプレッドシートに行いますので、スクリプトはスプレッドシートのコンテナバインドスクリプトとしてください。
function listCourses() {

  const response = Classroom.Courses.list();
  const courses = response.courses;

  const array = [['コース名','クラスコード','コースセクション']]; //※1
  const enrollmentCodes = [];
  for (let i = 0; i < courses.length; i++) {

    enrollmentCodes.push([courses[i].name, courses[i].enrollmentCode, courses[i].section]); //※2
  }

  const sheet = SpreadsheetApp.getActiveSheet();
  
  const midashirange = sheet.getRange(1, 1, array.length, array[0].length);
  midashirange.setValues(array);
  const range = sheet.getRange(2, 1, enrollmentCodes.length, enrollmentCodes[0].length);
  range.setValues(enrollmentCodes);

}

※1…スプレッドシートの1行目に出力されます。出力するメソッドにあわせて修正してください。
※2…このスクリプトでは、「コース名」、「クラスコード」、「コースセクション」を出力します。
上記以外の情報を出力したい場合には、Classroom APIのリファレンスを参照の上、適宜メソッドを修正してください。

出力結果のイメージは次のとおりです。

How to output about all classcodes belonging your domain?
For example, if you are an administrator of school or member of something classroom and want to automatically output all classroom codes, to do execute the above script.
That log will be output to the spreadsheet, so please use the spreadsheet's container-bound script.