見出し画像

#39 ロイロみたいな回答共有

要望として寄せられた、以下のような内容を GAS で実現してみました。
※「ロイロノート」は、株式会社LoiLoの登録商標または商標です。

スプレッドシートの一つのシート内で、自動でセル毎に保護するアカウントを決めるようなGASは可能なのでしょうか?
というのも、ロイロノートの解答集約画面のように、大型スクリーンに全員の意見が写せるようなイメージのまとめ方をしたいと思っています。

どんなプログラム?

スプレッドシートには、二つのシートとプログラムが保存されています。

1つ目のシートは、シートを編集する児童生徒のメールアドレスの一覧を設定するものです。設定できるのは 40人までとなっていますが、途中で抜けた番号があっても構いません。

シート「名列」

2つ目のシートは、作成するワークシートのテンプレートとなるシートです。プログラム中でシート名を用いて処理を行っているので、シート名は「テンプレート」からは変更しないでください。

シート「テンプレート」
  • シート「テンプレート」の体裁は、カスタマイズしても構いません。ただし、色や線種といった変更は問題ありませんが、列や行の追加・削除は行わないでください。

どうやって実行する?

以下の URL に、先生用の Google アカウントでログインしている状態でアクセスして、当該アカウントの Google ドライブにコピーします。

https://docs.google.com/spreadsheets/d/1_XbhOWBPUCbynHyQAAoNoNV72EZgT7PVLHRS4ow157c/copy

GAS のプログラムは、シート「名列」に用意したプログラムから実行します。

まずは、列 B に出席番号に応じたメールアドレスの一覧を設定します。作成するシートの対応するセルに設定しなければならない関係上、処理の対象は 40人としてありますが、途中に空欄があっても構いません。

メールアドレスの一覧を設定する

セル E5 にスプレッドシート名を入力してあれば、「ワークシート 20220604-001349」といった感じで名前を自動生成します。
「ワークシート作成」ボタンを押して、プログラムを実行します。

プログラムの実行

作成するファイルに対する処理が必要になるので、ちょっと時間がかかる感じがしますが、画面右下に進捗状況を表示しているのでしばらく待ってください…

画面右下の進捗表示

作成されたスプレッドシートは、元のスプレッドシートと同じフォルダに指定された名前で保存されています。 ※下図は、自動生成された名前です。

作成されたスプレッドシート
  • 作成されたスプレッドシートは、列 B で設定されたアカウントとの共有設定も済ませてあるので、Google ドライブから「共有リンクを取得」で取得した URL を伝えるだけで編集できるようになります。

  • シート内のそれぞれのセルには、出席番号に応じた生徒のアカウントでしか編集できないように保護が設定されています。生徒は自分の出席番号のセルしか編集できません。

  • 他人のセルを編集しようとすると、以下のような画面が表示されてしまいます。

編集できないセルを編集しようとすると…

共同編集したいけれど、他人のセルを編集してしまって、混乱するのはふせげるのではないか、と思います。

実際のプログラム

作成したのは、110行余りの以下のようなプログラムです。

最後に

最後に、お決まりのフレーズなどを書いておきます。

  • 一応の動作確認は行っているものの、不慮のトラブルによって損害等が生じても、責任はとれませんので予めご了承ください。

  • コメントを含めても 110行余りのスクリプトであり、実行に際して目的外の場所への書き出しや収集などは行っていません。

  • 特別なエラー処理は行っていないので、意図しないケースでエラーが発生してしまうかもしれません。どうにもならない場合には、ご連絡ください。

わたし自身にしてみると、このような「スクリプトを作ること」が目的になっているような感じですが、このスクリプトが何かの役に立てば幸いです。

この記事が気に入ったらサポートをしてみませんか?