
#34 個別の内容で生徒にメッセージを送信する
Google Classroom で、それぞれの生徒に個別のメッセージを送信する GAS のプログラムを作成してみました。
以前の「#26 スプレッドシートの内容に応じた証明書を作成して、メールで送信する」のプログラムで、個別の内容のメールを送信する方法もありますが、
児童生徒が Gmail が利用できない環境
児童生徒がメールの扱いよりも、Google Classroom の方が慣れている
といった理由から、Google Classroom を利用した解決策と使えるのではないか、とプログラムを作ってみました。
どんなプログラム?
以下の URL にアクセスすることで、自身の Google ドライブにスプレッドシートをコピーできます。
https://docs.google.com/spreadsheets/d/1umNsou-nFis15JcyZpNA9kBH1fXHiOTruzf6mFmOj3M/copy
スプレッドシートがコピーできたら、以降の手順のように操作します。
なお、スクリプトの初回実行時には、実行するアカウントによる確認作業が必要になります。詳しくは以下の投稿をご覧ください。
手順1「クラスの確認」

はじめに投稿の対象となるクラスの ID を確認します。
シート「クラスの確認」で「参加クラスの取得」ボタンを押す。
プログラムを実行したアカウントが、教師として参加している Google Classroom のクラスが一覧表示される。
→ 処理対象となるクラスの ID をメモしておく。
手順2「個別宛の投稿」

手順1で処理対象となるクラスの ID が確認できたら、個別宛の投稿内容を設定します。
列 A ~ F に、個別のアカウント宛の投稿の内容を設定する。
複数の内容を伝えられるように、「投稿メッセージ①」「投稿メッセージ②」「投稿メッセージ③」と 3つの項目を用意してあります。それぞれを改行して連結した文章が、本文として投稿が作成されます。
「投稿メッセージ①」~「投稿メッセージ③」は、すべてを設定しなければならないわけではありません。空欄になっていれば、空行になるだけです。また、それぞれの項目に改行を含んでいても構いません。
列 F の「URL」は必須の項目ではありません。設定されていれば、リンクとして設定されます。
「個別投稿の送信」ボタンを押すと、列 A ~ F の内容に従って、個別の投稿が送信される。
→ 列 G に実行結果が表示される。
使用にあたって…
実際にこのプログラムを使用する際には、以下の内容に注意して、テスト環境などで動作を確認してから、本番環境でお使いください。
スプレッドシートでプログラムを実行するアカウントが教師役として参加しているクラスが、処理の対象となります。 ※教師として参加しているクラスでなければ、個別のアカウント宛の投稿を作成できません。
クラス ID を指定したクラスに生徒役として参加しているアカウントが、投稿の対象で、クラスに参加していないアカウントに対しては、投稿を送信できません。
前項の条件を満たしていれば、複数のクラスを対象にした処理を一度に行えます。
個別のアカウント宛に投稿される内容は、下図のようなイメージとなります。GAS のプログラムで投稿していることで、プログラムを実行したアカウントの名前に続けて「(個別の生徒宛への投稿 経由)」と表示されています。 ※太字部分は変更できません。
この部分は、GAS のプログラムのプロジェクト名が表示されています。変更したい場合には、GAS のプログラムの編集画面で、適宜変更してください。


生徒にしてみれば、自分宛の投稿だけがストリームに表示されている状態になります。しかし、教師側としては送信した生徒の人数分の投稿がストリームに表示された状態となります。それも、それぞれの生徒に個別に送信した内容は、他の生徒に見られるべきではない内容でしょうから、そのクラスの画面をプロジェクターや画面共有などで見せられなくなってしまいます。
実際の投稿の内容は、announcementsIndividualStudents() で設定しています。具体的には、プログラムの 126行目で変数 postMessage に設定している部分です。必要に応じて、この辺りをカスタマイズしてください。

簡単に設定できたので、リンクを添付できるようにしてありますが、リンク以外を添付したい場合には、プログラムの修正が必要になります。以下の API リファレンスなどを参考にしてください。
コメントで要望があったので、作成した個別投稿の削除機能を追加してみました。作成時期などは関係なく、「個別投稿」で「自身の作成した投稿」をすべて削除します。 ※ただし、どこで記憶しているのか、当該プログラムで自動作成したものしか削除できないようなので、削除できない場合には手作業で削除してください。

最後に
最後に、お決まりのフレーズなどを書いておきます。
一応の動作確認は行っているものの、不慮のトラブルによって損害等が生じても、責任はとれませんので予めご了承ください。
コメントを含めても 170行程度のスクリプトであり、実行に際して目的外の場所への書き出しや収集などは行っていません。
特別なエラー処理は行っていないので、意図しないケースでエラーが発生してしまうかもしれません。どうにもならない場合には、ご連絡ください。
わたし自身にしてみると、このような「スクリプトを作ること」が目的になっているような感じですが、このスクリプトが何かの役に立てば幸いです。