Google Classroom 採点タブの成績をコピペしてGASで整える
Google Classroomの採点タブの成績をコピペしてGASで整えました。
前回の記事で、クラスルームの全体の成績のダウンロードがうまくいかないケースがあることを書きました。「すべての成績をGoogleスプレッドシートにコピー」、「CSV形式でダウンロード」ともに、ダウンロード中にタイムアウトしてしまって失敗に終わる場合があります。
採点タブにはすべての成績が一覧で表示されますので、これをコピペしてスプレッドシートに貼り付け、利用する方法を検討しました。アイキャッチにあるのが、その状態です。
やりたいことは、各生徒のクラスルーム上での合計点を求めることです。しかし、実際にコピペしてみると、採点タブでは表示されていないものも含めて、様々な文字列が現れます。このままでは、集計ができません。
そこで、Google App Scriptです。やっていることは、バラバラなフォントサイズを10で揃え、B列に1列挿入をして、各行でC列以降の数字を合計するSUM関数を入力しています。全件数に合わせて関数を下にコピーしてもらうことを想定しています。その後、余計な文字列を1つずつ置換を使って消しています。
function replacement() {
const sheet = SpreadsheetApp.getActiveSheet();
const range = sheet.getDataRange();
range.setFontSize(10);
sheet.insertColumnBefore(2);
sheet.getRange("B9").setFormula("SUM(C9:9)");
const finderj = sheet.createTextFinder('未提出|未評価|割り当て済み|未割り当て|提出済み|期限後の完了').useRegularExpression(true);
const cntj = finderj.replaceAllWith('');
const finder = sheet.createTextFinder('Estigfend.|Estigfend|/. 点').useRegularExpression(true);
const cnt = finder.replaceAllWith('');
SpreadsheetApp.getUi().alert(cnt + '件置換しました。');
}
今回は、クラスルーム上で配点された点数が1桁になっていることを前提としています。2桁以上では置換に問題が発生しますのでご注意ください。
2桁、3桁の点数が入ったままでしたので不完全ですが、1桁の点数については、きれいになっていることがわかるかと思います。
また、最初のデータがB9のセルから始まるようになっていますが、コピーの仕方によってずれますので、そのあとのC列の設定も含めて、適切になるように修正してお使いください。
置換が2つに分かれていますが、一緒にまとめるとアルファベットの文字列から置換が実行されるような動きが見られましたので、意図的に分割しています。
正規表現を使用していますが、点数が2桁、3桁の場合については不勉強で解決できませんでした。
もう少し改良の余地があるのですが、とりあえずここまででまとめておきたいと思います。