GASで生徒の質問対応をする教師


質問対応にGoogleフォームを使用

高校で教員をしています。
学校が臨時休校になったとき,教員と生徒にGoogleアカウントが割り当てられ,Classroomなどを使えるようになりました。
生徒からの質問対応にGmailを使いたかったのですが使用不可に設定されており,生徒との個人的なメールアドレスでのやり取りも禁止されているため,以下の方法で質問を受けることにしました。

  1. Googleフォームで名前,質問内容,参考画像(あれば)を回答してもらう
  2. 生徒個人へGoogle Classroomで質問を作成し,質問内容に返事を,回答には選択肢「既読」のみを用意して送信する

理系科目のため,数式や図を紙に書いて写真で送信できるよう,このような方法にしています。

フォームへの回答内容をメール通知

フォームをこまめにチェックするのが面倒なので,回答をメール通知してもらうためのGoogleAppsScriptを作りました。
フォーム本体からの通知だと,参考画像が送られてきたときにGoogle Drive上のURLが取得できなかったため,フォームに紐付けられているスプレッドシートから通知するようにしました。

このようなシートになっていて,回答があるたびに最新行に内容が追加されていくようです。

「ツール」→「スクリプトエディタ」を開き,以下のようなGoogle Apps Scriptを作りました。

function sendNotification() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();//スプレッドシートを取得
  const sheet = ss.getSheets()[0];//シートを指定
  const cell = sheet.getLastRow();//最新行を取得

//最新行のB列の値を取得(アカウント)
  const account = sheet.getRange('B'+ cell).getValue();

//最新行のC列の値を取得(氏名)
  const name = sheet.getRange('C'+ cell).getValue();

//最新行のD列の値を取得(質問内容)
  const question = sheet.getRange('D'+ cell).getValue();

//最新行のE列の値を取得(画像URL)
  const image = sheet.getRange('E'+ cell).getValue();

//メールの本文を指定
  const msg = account + '\n氏名:' + name + '\n質問:' + question + '\n' + image;

//メールを送る(メールアドレスは自分のものに変更します)
  MailApp.sendEmail('[email protected]', '質問がきました', msg);
};

トリガーをこのように設定しました。

使用してみて

生徒からの質問があると,以下のようなメールが届きます。

質問がきました

<生徒アカウント>
氏名:<氏名>
質問:<質問内容>
<画像URL>

フォーム自体の設定での通知や,Zapierを利用しての通知なども試してみましたが,スマホのメールで素早く確認する場合にはこの方法が最も便利そうです。

生徒への返信方法は?

Classroomでその生徒に向けた選択肢型の質問を作成し,返信をしています。
選択肢は一択で「既読」とすることで,生徒の既読確認に使っています。

別の使い方

同じようにして,担任クラスの生徒に大学入試の合否発表をさせています。
メール通知が来るのでリアルタイムで報告が見られて便利です。