見出し画像

Google Classroom APIを使ってGoogleクラスルームの情報を取得してみる

KCompany

【2022/02/10追記】こちらの記事の続きを、当オフィスのブログで読むことができます。よろしければご覧いただければ幸いです

-----------------------------------------------------------------------------

こんにちは!KCompany代表のケータです!

本日はごく触り程度ですが、Google Classroom APIを使ってGoogleクラスルームの情報を取得する方法についてご紹介します。というのも、ググっても公式ドキュメント以外にあまり情報がなく、自分の案件で実際に使ってみる必要がでてきたので調べてみた次第です。

事前セットアップ

動作環境の構築は公式ドキュメントのQuickstartを参照されるとよいです。こちらの説明ではスタンドアロンスクリプトとして利用することになりますが、コンテナバインドスクリプトとしても動作させることはできるのではないでしょうか。

いずれにしても、Google Classroom APIの設定を有効にすることは必要になりますね。

サンプルコード

まず手始めに下記の公式ドキュメントほぼままのコードを動かしてみます。

function listCourses() {
 let optionalArgs = {
   pageSize: 10
 };
 const response = Classroom.Courses.list(optionalArgs);
 const courses = response.courses;
 Logger.log(courses)
 if (courses && courses.length > 0) {
   for (i = 0; i < courses.length; i++) {
     let course = courses[i];
     Logger.log('%s (%s)[%s]', course.name, course.id, course.room);
   }
 } else {
   Logger.log('No courses found.');
 }
}

実際に実行してみると、以下のようにログが取得できました(といっても、IDがズラズラでてきたりするので、海苔弁ばっかりであまり意味ないですね汗)

画像1

以下は、特定のコースのお知らせを取得する関数です。ログは省きますが、お知らせのタイトルと該当のURLを取得することができました。

function listCoursesAnnouncements() {
 const courseId = '***********'; // コースIDを記載
 let announcementsList = [];
 try {
   const course = Classroom.Courses.Announcements.list(courseId);
   for(let announcements of course.announcements){
     let list = [announcements.text,announcements.alternateLink];
     announcementsList.push(list);
   }
   Logger.log(announcementsList);
   return announcementsList;
 } catch (err) {
   Logger.log(err);
 }
}

上記事例ではlistのみですが、createで投稿したりもdeleteで削除したりもできるようですね。

今後はスプレッドシートやドライブなどと連携させながら、スクリプトを組んでいきたいと思います!このnoteでも何らかアウトプットできそうなものがあれば公開したいですね。

APIのリファレンスを参考に今後も色々試してみたいと思います!

本日は以上です。それでは。

【お仕事のご依頼について】

こちらの記事に記載した内容以外にも、Google Apps Script開発やGoogle Workspaceを活用したデジタル化推進のお仕事を行っています。【GAS】そのまま使えるシリーズのカスタマイズのご相談ももちろん大丈夫です。
ちょっとしたお困りごとでも、こちらのサイトのお問い合わせフォームからご連絡いただければ、折り返しご連絡いたします。

この記事が気に入ったら、サポートをしてみませんか?
気軽にクリエイターの支援と、記事のオススメができます!
KCompany

よろしければサポートをお願いします!いただいたサポートは、サービス開発・改善のために使わせていただきます。主に書籍代や勉強会の参加費用などを想定しています。よろしくお願いします。