#16 Google Classroom に予約投稿を一括作成する
無料で開催されていた研修会「Google Classroom で職員朝礼 0 分へ!」に参加したところ、次のような事例が紹介されていました。
当該校の教職員全員が参加する Google Classroom のクラスを作成しておく。
毎回の職員朝礼での連絡事項を、「授業」タブの「資料」として伝達する。
あらかじめ、それぞれの日の「資料」は予約投稿として作成しておき、その日の朝までに連絡事項を入力しておく。
連絡事項を入力できるのは、当該クラスの教師に割り当てられている人だけ。クラスの教師に設定できる人数には 20人の制限があるため、管理職や校務分掌の主任など人数を絞っている。
教師に割り当てられていない人が連絡したい場合には、 教師に割り当てられている人に入力をお願いする。
担任が持ち運べる端末があれば、メモし直す必要がなく、詳細な資料なども添付できる。
この投稿では、この事例のような運用をよりスムーズに行うためのスクリプトを作成してみました。
はじめに
このような運用を行う場合に、事前に作成しておかなければならない予約投稿を、上記の事例紹介を行っていた学校では手入力で一つずつ作成しておられるようでした。
予約投稿を作成する作業より簡単に行えるように、スプレッドシートに入力した一覧から作成スクリプトを作成しました。
投稿を作成するアカウントでログインした状態で、以下の URL にアクセスして、自身のマイドライブに作業用のスプレッドシートをコピーしてください。
https://docs.google.com/spreadsheets/d/1aJ1GYPc-wm317L5WRdrA0yIVJmqcisww-hNAuq6uqqs/copy
操作手順
詳細な使い方は、スプレッドシート内の列 O にまとめてあるので確認ください。
基本的には、必要な ID を入力(コピペ)して、順番にボタンを押していく感じです。
操作に間違いがないように動作に必要な事項を入力するフォーム画面を表示させるといいのでしょうが、プログラム(スクリプト)の作り込みにかかる手間が増大するので、指定されたセルに入力(コピペ)する形になっています。
入力するセルは、シート右側の説明を見てください。作成された「資料」や「連絡事項」の本文には、日付の文字列が設定されています。このあたりの体裁を調整したい場合には、プログラム中の titleStr や descStr あたりをカスタマイズしてください。
案内する文章を複数行にしたい場合は、\n で改行を含められます。
2022/01/15 に更新した Ver.1.3 以降では、セル M4 に入力された内容を2行目に表示するようにしてあります。
※このセルに \n などと表記しても、改行されません。改行したい場合には、セル内で Alt+Enter で改行してください。2022/05/23 に更新した Ver.1.4a 以降では、
列 N に文字列が指定されていれば、セル M4 よりも優先して本文として使用されます。
列 O に文字列が指定されていれば、その文字列を URL としてリンクを設定します。
黄色の「クリア」ボタンを押すと、「年」「月」「日」の各欄に明日の日付を初期値として入力されるようにしました。
※ここで設定される日付は、少なくとも明日以降の日付が設定されなければならないので、空欄よりは使い勝手がいいだろうと考えました。
2022/05/24 に更新した Ver.1.5 以降では、
セル O1 のチェックボックスを ON にすると、「資料」としてではなく、ストリームに「連絡事項」として予約投稿します。 ※「資料」と「連絡事項」の使い分けは、お好みでどうぞ!
2022/10/16 に更新した Ver.1.6 以降では、
セル P1 のチェックボックスを ON にすると、「課題」として予約投稿します。 ※「資料」「連絡事項」「課題」の使い分けは、お好みでどうぞ! ちなみに、それぞれのチェックボックスの指定が優先されます。
このスクリプトで作成した予約投稿の「資料」や「連絡事項」を削除する機能は備えられていません。削除する場合には、手作業で一つずつ削除しなければなりません。
コピーしたスプレッドシートとプログラムをそのまま使用すると、下図のようなに予約投稿が公開されます。黄色のマーカー部分の文字列を変更したい場合には、プログラムを実行する前に #47 をご覧ください。 追記:2022/09/11
スクリプトの初回実行時には、実行するアカウントによる確認作業が必要になりますので、詳しくは以下の記事をご覧ください。
スクリプトについての補足
それぞれのボタンから呼び出される関数では、それぞれ以下の API を使って処理しています。似たような処理を行っている感じです。
Classroom.Courses.list … クラスの一覧の取得
Classroom.Courses.Topics.list … トピックの一覧の取得
Classroom.Courses.CourseWorkMaterials.create … 資料の作成
Classroom.Courses.Announcements.create … 投稿の作成デフォルト設定では、GAS に付随する appsscript.json に設定された timezone が America/New_York に設定されているので、Asia/Tokyo に変更しておかないと、意図した時間に設定されません。
※この予約投稿の時間指定に、一番悩まされました。appsscript.json を変更する場合には、「プロジェクトの設定」で「「appsscript.json」マニフェスト ファイルをエディタで表示する」を ON にしなければなりません。前項のように変更したら、OFF に戻して構いません。
このスクリプトでは予約投稿を作成するだけで、同じ日付で重複して作成していないかはチェックしていません。
最後に
最後に、お決まりのフレーズなどを書いておきます。
一応の動作確認は行っているものの、不慮のトラブルによって損害等が生じても、責任はとれませんので予めご了承ください。
コメントを含めても 350行程度のスクリプトであり、実行に際して目的外の場所への書き出しや収集などは行っていません。
特別なエラー処理は行っていないので、意図しないケースでエラーが発生してしまうかもしれません。どうにもならない場合には、ご連絡ください。
作成するきっかけとなった学校にも利用していただき、「めちゃ口ちゃ便利です。これ使えますよ。」とコメントをいただきました。このようなスクリプトで、うまく校務が効率化できれば幸いです。