【Google Classroom】クラスのステータスを一括変更/一括削除する

前回に引き続き、Google Classroomの活用記事です。
基本的には、前回までの記事を読んだ人向けの記事になっています。(GASを触ったことがある人であれば、この記事単発でも大丈夫です)

前回は、クラスの情報を一括取得して一覧表を作成する方法を紹介しましたが、今回は、スプレッドシートから、クラスのステータスを一括変更したり、クラスを一括削除する方法を紹介します。

*この記事を参考にしたことにより、ご利用者様、または第三者に損害・トラブル等が発生した場合でも、一切の責任を負いません。自己責任の上でのご利用をお願いいたします。

スプレッドシートを作る

毎度恒例ですが、まずはスプレッドシートから作っていきます。
下図と同じように作ってください。(一言一句同じにする必要はありません)

シート名はコース変更削除にしてください。
シート全体を選択し、セルの書式は「書式なしテキスト」にしておいてください。

今回は3列のみなので楽ですね

スクリプトを貼り付ける+ボタンに割り当てる

下記のコードをスクリプトエディタに貼り付けてください。
前回までのスプレッドシートを継続して利用している人は、前回貼り付けたスクリプトの下に貼り付けてください。

/***********************************************
 *  コースの状態を変更する
 ***********************************************/
function procCourse() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("コース変更削除");
  const data = sheet.getDataRange().getValues();
  data.shift();
  const select = Browser.msgBox( data.length + "件の処理を行います。この処理は、細心の注意のもとで行ってください。よろしいですか?", Browser.Buttons.OK_CANCEL);
  if (select == "cancel") {
      Browser.msgBox("キャンセルしました");
      return;
  }
  sheet.getRange(2, 3, sheet.getMaxRows(), 3).clearContent();
  for (let i = 0; i < data.length; i++){
    switch (data[i][1]) {
    case 'DELETE':
      try {
        Classroom.Courses.remove(data[i][0]);
        sheet.getRange(i + 2, 3).setValue("成功");
      } catch(e) {
        sheet.getRange(i + 2, 3).setValue(e);
      }
      break;
    case "ACTIVE":
    case "ARCHIVED":
    case "PROVISIONED":
    case "DECLINED":
      const course = { "courseState": data[i][1] };
      try{
        Classroom.Courses.patch(course, data[i][0], {'updateMask':'courseState'}); 
        sheet.getRange(i + 2, 3).setValue("成功");
      } catch(e) {
        sheet.getRange(i + 2, 3).setValue(e);
      }
      break;
    default:
        sheet.getRange(i + 2, 3).setValue("処理なし");
      break;
    }
  }
  SpreadsheetApp.flush();
  Browser.msgBox("処理が終了しました。");  
} 

コードを貼り付け後、スプレッドシート上の※ 処理実行 ※ボタンにprocCourseを割り当ててください。

実行してみる

ここまででツールの作成は完了です。

早速実行してみましょう。
処理対象のコースIDを入力して、その右(B列)に、処理内容(ステータスの変更内容)を入力します。

このテストデータは、下表のようなデータです。

コースIDクラス名現在の状態変更先の状態
232847657238社会PROVISIONEDDECLINED
232848627886理科ACTIVEPROVISIONED
232847657234英語ARCHIVEDDELETE
232848627882算数DECLINEDPROVISIONED
232847739299国語ACTIVEARCHIVED
ボタンを押すと確認メッセージが表示されます
実行した結果(エラー1件あり)

1行目(PROVISIONED → DECLINED)は失敗したので、結果欄にエラーメッセージが出力されました。公式のリファレンスだと、できそうな気がしたのですが・・・

今回のテストは、一般の無料Gmailアカウントで実施したのですが、職場のアカウントだと違う結果になる操作もありましたので、実行する人の環境によって結果が異なることがありそうです。

おわりに

いかがでしたでしょうか。参考になれば幸いです。

次回は、教師や生徒の登録・削除の一括操作をしていきたいと思います。

コメント