LoginSignup
0
0

【GAS】複数のGoogle Classroomに連絡事項を投稿する

Last updated at Posted at 2024-02-28

1 目的

Google Classroomは、一般にはあまり馴染みがないかもしれませんが、学校でよく使われているGoogleアプリケーションです。全校のclassroom、たくさんのclassroomに同じ連絡事項を投稿したいことがあるかもしれません。同じ投稿を手作業で何個もするのは面倒くさいですよね。そこで、Google apps Scriptで、複数のclassroomに同じ連絡事項を投稿するものを作ってみました。スプレッドシートのデータを元に連絡事項を投稿するコンテナバインドのスクリプトです。

2 データのスプレッドシート

データのシートが2つあります。
シートmyclasslist2に、クラス名と クラスルームID(courseId)が入っています。これは、【GAS】Google ClassroomのcourseId等一覧を取得するで作成したシートを元に作ると良いと思います。(例示しているcourseIdはランダムな数字で実在のものとは関係ありません。)
Screenshot20240228_1.png
シートannounceに、メッセージとリンクURLを入力します。メッセージはセルB2、リンクはセルB3に入力します。リンクを添付しない場合はB3は空欄として下さい。メッセージ本文中にURLを書けばクラスのストリームでの表示はハイパーリンクとなります。
Screenshot20240228_2.png

3 スクリプト

postAnnounce.gs
function postAnnounce() {
  //シートからclassroomのデータを読み取る
  const myspreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  const mysheet1 = myspreadsheet.getSheetByName('myclasslist2');
  const mydata1 = mysheet1.getRange(2, 1, mysheet1.getLastRow() - 1, 2).getValues();
  //シートからメッセージとURLのデータを読み取る
  const mysheet2 = myspreadsheet.getSheetByName('announce');
  const mymessage = mysheet2.getRange('B2').getValue();
  const myurl = mysheet2.getRange('B3').getValue();
  //各クラスに対して連絡事項を投稿
  for (let i = 0; i < mydata1.length; i++) {
    let className = mydata1[i][0];
    let courseId = String(mydata1[i][1]);
    try {
      //連絡事項を作成 
      let myannouncement = {
          text: mymessage   
      }
      if (myurl !== '') {
        myannouncement.materials = [{ link: { url: myurl } }]; 
      }
      //連絡事項を投稿
      Classroom.Courses.Announcements.create(myannouncement, courseId);
      Logger.log('連絡事項がクラス "' + className + '" に投稿されました。');
    } catch (error) {
      Logger.log('クラス "' + className + '" への投稿中にエラーが発生しました: ' + error.message);
    }
  }
}

クラスルームのID(courseId)は数字なので、スプレッドシートに入ったcourseIdは特に設定しなければ数値型になってしまうのですが、courseIdは文字列型として使いたいので、String()で文字列型にしています。最初そのことを忘れていて数値型で扱ったのですが、このスクリプトは問題なく動きました。courseIdは数値型でもいけるのか?と思い、他の、ユーザーをclassroomに招待するスクリプトで試してみたらそちらはエラーになりました。courseIdは文字列型で使用することにしておいた方が無難なようです。

4 参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0