Google Classroomを自動化 「これらの成績をCSV形式でダウンロード」にPower Automateを活用

成績ダウンロードするフロー

Google Classroomを自動化。「これらの成績をCSV形式でダウンロード」にPower Automateを活用します。

クラスルームの成績をダウンロードする

ご存知のように、クラスルームの成績のダウンロードには以下の3つの方法があります。

  • すべての成績をGoogleスプレッドシートにコピー
  • すべての成績をCSV形式でダウンロード
  • これらの成績をCSV形式でダウンロード

これらがすべて使用できれば便利ですが、上の2つ「すべて・・・」はデータの大きさによって使用できないケースがあります。ネット上で検索してみても悩みを抱えている方は多いようです。

私の試したケースでは、70人以上の生徒を登録したクラスでは、ダウンロードを開始して10分弱「読み込み中」の状態が続き、最後は「502エラー」が表示されてタイムアウトするというものでした。70人に満たないクラスでは、問題なくスプレッドシートも、CSV形式もダウンロードができました。

そうなると、ダウンロードできないクラスの成績をまとめるには、3つ目の「これらの成績をCSV形式でダウンロード」を使って、すべての課題を個々にダウンロードするより方法が無くなります。

しかし、このダウンロードを複数クラスで行おうとすると、作業はかなり膨大になり、ダウンロードの順番を飛ばしたり、2度同じものをダウンロードしてしまったりと、混乱を生じることがままありました。

ダウンロード作業を自動化してみる

GASの記事をずっと書いていたので、成績のダウンロードもGASでできないかと調べてみましたが、それは想定されていないようでした。そもそも、GUIでも、どこかの課題を開いて3種類のメニューからダウンロードを始めるスタイルは、設計に無理があるのではないかという指摘もネット上に見られました。コマンドを叩いて出力するのは無理そうだな、とあきらめかけていましたが、Power Automateならどうだろうか、と試してみたのが以下の記事です。

Power Automateで成績のダウンロードを自動化する

実際に作成したフローはこちらです。いくつかのサイトを参考にさせてもらいながら試行錯誤して完成しました。

成績ダウンロードするフロー

フローに含まれるアクションを順を追って、ひとつずつ見ていきましよう。

Power Automateの準備

Power Automate Desktopは、Windows 11に標準でインストールされています。

詳しい情報はこちらをご覧ください。メニューから見つからない方はメニューの検索などから探してみましょう。とりあえず起動してみます。

左上の「新しいフロー」をクリックします。

Power Automate
Power Automateの起動後の画面 まだフローが登録されていません

「フロー名」を入れて「作成」をクリックします。

Power Automate フロー名
フローの作成開始画面です フロー名を入れて始めます

フローを作成する準備ができました。左側が「アクショングループ」、こちらから必要なアクションを選んで、フローを組み立ていきます。

Power Automate アクション

上の完成したフローと見比べながら、下の作業を進めていきましょう。

「ファイルの選択ダイアログを表示」

アクショングループの「メッセージボックス」 > 「ファイルの選択ダイアログを表示」をダブルクリックします。表示されたアクションダイアログの以下の項目を入力します。
※ダブルクリックの代わりにドラッグ&ドロップでも同様の操作が可能です。

  • ダイアログのタイトル : 「リストを選択してください」
  • 初期フォルダ : 採点する課題のページのURLを一覧にしたテキストファイルを使用します。そのファイルを保存するフォルダを、右のフォルダアイコンをクリックして選択します。
  • ここでは、デスクトップに「巡回リスト」というフォルダを作成し、その中にテキストファイルを置いています。
アクション「ファイルの選択ダイアログを表示」

URL一覧のファイルの例
メモ帳などに課題をダウンロードするページのURLを貼り付けて保存します。

https://classroom.google.com/u/0/c/***************************/submissions/by-status/and-sort-name/all
https://classroom.google.com/u/0/c/***************************/submissions/by-status/and-sort-name/all
https://classroom.google.com/u/0/c/***************************/submissions/by-status/and-sort-name/all
https://classroom.google.com/u/0/c/***************************/submissions/by-status/and-sort-name/all
https://classroom.google.com/u/0/c/***************************/submissions/by-status/and-sort-name/all

「ファイルからテキストを読み取る」

アクショングループの「ファイル」 > 「ファイルからテキストを読み取る」をダブルクリックします。表示されたアクションダイアログの以下の項目を入力します。

  • ファィル パス : 「%SelectedFile%」
  • 内容の保存方法 : 「単一のテキスト値」
  • エンコード : 「UTF-8」
アクション「ファイルからテキストを読み取る」

「テキストの分割」

アクショングループの「テキスト」 > 「テキストの分割」をダブルクリックします。表示されたアクションダイアログの以下の項目を入力します。

  • 分割するテキスト : 「%FileContents%」
  • 区切り記号の種類 : 「標準」
  • 標準の区切り記号 : 「新しい行」
  • 回数 : 「1」
アクション「テキストの分割」

「新しいChromeを起動する」

アクショングループの「ブラウザ自動化」 > 「新しいChromeを起動する」をダブルクリックします。表示されたアクションダイアログの以下の項目を入力します。

  • 起動モード : 「実行中のインスタンスに接続する」
  • Chromeタブに接続する : 「タイトルを使用」
  • タブのタイトル : 「%Browser%」
アクション「新しいChromeを起動する」

起動モードに「新しいインスタンスを起動する」を選ぶと、ダウンロードの度にブラウザーが起動されてしまいますので気をつけましよう。また、起動の度に位置がずれていくので、あとで行うクリックの操作がうまくいかなくなります。

「For each」

アクショングループの「ループ」 > 「For each」をダブルクリックします。表示されたアクションダイアログの以下の項目を入力します。

  • 反復処理を行う値 : 「%TextList%」
アクション「For each」

「If」

アクショングループの「条件」 > 「If」をダブルクリックします。以下の項目を入力します。

  • 最初のオペランド : 「%CurrentItem%」
  • 演算子 : 「空でない」
アクション「If」

このあとの項目は、「For each」、「If」とそれぞれの「End」のアクションにはさまれる形で設定します。うまく間に入らない場合には、アクションをドラッグ&ドロップで移動することができます。

「Webページに移動」

アクショングループの「ブラウザー自動化」 > 「Webページに移動」をダブルクリックします。表示されたアクションダイアログの以下の項目を入力します。

  • Webブラウザーインスタンス : 「%Browser%」
  • 移動 : 「URLに移動」
  • URL: 「%CurrentItem%」
アクション「Webページに移動」

「マウスを画像に移動」

アクショングループの「マウスとキーボード」 > 「マウスを画像に移動」をダブルクリックします。表示されたアクションダイアログの以下の項目を入力します。

「画像を選択してください」 > 「画像のキャプチャー」から、課題ページの右上にあるダウンロードのアイコンをキャプチャーします。マウスは、この画像を目指して移動するようになります。

この画像を四角く切り抜いてキャプチャ
  • マウスの移動スタイル : 「すぐに」
  • 発生回数 : 「1」
  • マウスの移動後にクリックを送信します : 「ON」
  • クリックの種類 : 「左クリック」
アクション「マウスを画像に移動」

ダウンロードには「リンクをクリック」のようなアクションもあるのですが、クラスルームのアイコンはリンクとして認識されませんでした。やむなく「画像に移動」してクリックするアクションを採用しました。

このアクションがなかなか微妙で、ブラウザの位置や表示画面の幅が変わると、画像を見つけられなくなります。ブラウザを毎回、同じ位置に設置できない場合には、都度、画像のキャプチャーが必要になります。

「マウスの移動」

アクショングループの「マウスとキーボード」 > 「マウスの移動」をダブルクリックします。表示されるアクションダイアログの以下の項目を入力します。

  • 位置X、位置Y : クラスルームで「これらの成績をダウンロード」のメニューにマウスポインタを合わせた状態で、Controlキー + Shiftキーを押すと取得された値が入力されます。
「これらの成績をCSV形式でダウンロード」にマウスポインタを合わせて、Controlキー+Shiftキーを押す
  • 相対 : 「画面」
  • 前の位置からマウスを移動します : アニメーション付き(低速)
アクション「マウスの移動」

上記と同様に、こちらもブラウザの位置が変わるとクリックができなくなります。アイコンの位置からの相対位置というのも試しましたがうまくゆかず、画面上での相対位置で移動しています。再開前には、一度試してみてから実行しましょう。

マウスの移動を低速にしているのは、画面の読み込みが追いつかないケース考慮したためです。ゆっくりと移動する間に、ページの読み込みが完了することを想定しています。

「マウス クリックの送信」

アクショングループの「マウスとキーボード」 > 「マウスクリックの送信」をダブルクリックします。表示されるアクションダイアログの以下の項目を入力します。

  • 送信するマウスイベント : 「左クリック」
  • 遅延 : 「5」
アクション「マウスクリックの送信」

上記と同様の理由で、マウスがクリックされるまで5秒間の遅延を設けています。

実行する際の注意点

  • あらかじめブラウザーを起動して、クラスルームのホームを開いておく。
  • ダウンロードのアイコン、メニューの位置合わせをきちんとしておく。
  • 複数のページを開いていると誤作動の原因になるので、タブも含めて開くのは1ページのみにする。
  • 停止はShift + F5キー、マウスポインターが移動するので、万が一の際にはショートカットで止める。

まとめ

ダウンロードを自動化して感じるメリットを並べてみると、、

  • 同じものを重ねてダウンロードしてしまうなどの無駄がなくなった。
  • 順にダウンロードする際に、ダウンロードし忘れなどのミスがなくなった。
  • 長時間やっていると別のクラスのものが混じったりする恐れもあったが、その可能性がなくなった。

自動化はメリットしかありません。ぜひ、試していただくことをお勧めします。クラスルームの機能も、さらに使いやすくアップデートされることを期待します。