見出し画像

#54 Google スライドでの競合しない共同編集

複数の GEG(GEG Kashiwa、GEG Minami Shinshu、GEG Yamanshi West)による Google スライドについてのオンラインイベントが開催されていました。

Google スライド 基礎から活用まで講座(全3回)

そこで用いられていた、Google スライドによる競合しない共同編集の方法が興味深かった。

追記 2022/10/24:
セル G4/G5 に追加したチェックボックスを ON にすると、「個別ファイル」を生成するときに、スライドの左下に「No. - 名前」や「No.」をテキストボックスとして挿入するようにしました。 ただし、このチェックボックスを ON にすると、ファイル生成時に要する時間が 1ファイルあたり数秒加算されるので、より時間を要することはご了承ください。

追記 2022/10/27:
同じようなリンク貼り付けによってまとめたスライドを作るプログラムを、入力が Google Classroom の課題とするバージョンも作ってみました。↓ のリンクをご覧ください。

Google スライドでの競合しない共同編集

どのような方法かというと、「個別ファイル」と「まとめファイル」の 2つのファイルを用意し、「個別ファイル」の先頭のスライドを、「まとめファイル」にリンク貼り付けしておきます。

このような形にしておくと、「個別ファイル」が更新されていれば、「まとめファイル」側では「更新」ボタンが表示されます。「更新」ボタンを押すと、「個別ファイル」での編集内容が「まとめファイル」に反映されます。

更新されていれば、「まとめファイル」側では「更新」ボタンが表示される

「まとめファイル」と「個別ファイル」に対して、適切な権限(編集者 or 閲覧者)を設定しておけば、以下のような運用が行えます。

  • 誤った編集によって他の生徒が編集するスライドを誤って編集してしまうことを防ぐ。

  • 「更新」ボタンを押せるのは、「まとめファイル」の編集が行える人だけであり、権限のない人には更新できない。

    • 「更新」ボタンを押すタイミングを提出として扱うことも可能。

    • 自身以外の「個別ファイル」に対する権限を設定しなければ、作業中に他の生徒の状況を見せないようにできる。

ただ、このような複数のファイルを作成して、リンク貼り付けを設定するのはとても面倒… そんなファイルの作成作業を、GAS で一括処理するプログラムを作成してみました。

作成した GAS のプログラム

前述した「まとめファイル」と「個別ファイル」の関係は、下図のような感じです。

それぞれのファイルのつながり

以降で、使い方を説明します。

(0) 準備

先生のアカウントでログインした状態で、以下の URL にアクセスして、「管理シート」を、自身の Google ドライブにコピーします。

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

「まとめファイル」や「個別ファイル」は、「管理シート」が保存されているフォルダに作成するので、「管理シート」は目的のプレゼンテーション毎にフォルダを作成して、そのフォルダ内に移動させておくと、作成されたファイルが整理しやすいと思います。

コピーしたスプレッドシートでプログラムを実行するときには、初回だけ権限の確認が行われます。その辺りの説明は、以下の記事をご覧ください。

(1) 管理シートに生徒の一覧を設定

Google スプレッドシートによる「管理シート」で、対象となる生徒の一覧を作成します。

「管理シート」の初期状態

最低限入力しなければならないのは、列 A と列 C です。 ※列 B については、入力されていなければ名前が空欄になるだけですが、列 C は共有の権限を設定するために必要です。
下図のような感じで設定してください。列 A は図のようにゼロパディングしておくと、10人以上の場合でも意図したように表示されるのでいいと思います。

生徒の一覧を設定した例

次の操作で、以下のように反映されるのでセル G1 と H1 にも、必要に応じて設定を行います。

  • セル G1 のチェックボックスが ON になっていると、生成されるファイル名に、スプレッドシートのファイル名が付加されます。 ※スプレッドシートの名前も、「個別ファイル」を作成する前にわかりやすい名前に変更してください。

  • セル H1 に、テンプレートとなる Google スライドのファイル ID を設定しておけば、その 1枚目がテンプレートとしてコピーされます。

(2) 個別ファイルの作成

前項の生徒の一覧を作成したら、画面の上部にあるメニューから「個別のプレゼンテーション」→「個別ファイルの作成」を選択します。

  • このとき、既に「個別ファイル」などが作成されている状態であっても、確認することなく処理を開始します。
    その場合でも、既に存在している「個別ファイル」などに上書きするわけではなく、それぞれのファイルを新規に作成し、シートに記録される情報が上書きされるだけです。既に作成されていた「個別ファイル」などは、そのまま残っています。

「個別のプレゼンテーション」→「個別ファイルの作成」を選択

前述したように、
GAS のプログラムの初回実行時には、実行するアカウントによる確認作業が必要になります。詳しくは以下の投稿をご覧ください。

それぞれの「個別ファイル」を作成するのには、1つのファイルあたり 5秒程度の時間を要するようです。対象となる生徒の人数に応じて、相応の時間が必要になるため、画面右下に進捗状況を表示するようにしました。 ※このような表示によって、より時間を要するのかもしれませんが、状況がわからないまま待つよりはいいと考えました。

画面右下に進捗状況を表示

処理が完了すると、列 E に作成された Googleスライドのファイルのファイル ID が記録されます。セル E1 には「まとめファイル」が、セル E2 以降にはそれぞれの行の生徒に対応する「個別ファイル」が記録されています。
それぞれのファイル ID には、当該ファイルへのリンクが設定されているので、クリックするとすぐに開けます。

生徒側には、特別な通知は行われませんが、Google ドライブの「共有アイテム」に下図のように 2つのファイルが共有されます。

  • セル G1 を ON に設定し、それぞれのファイルのファイル名には、「管理シート」のファイル名(個別に編集したものをまとめるスライド(実行用))が追加されています。

  • 「まとめスライド…」が「まとめファイル」です。
    このファイルには、それぞれの生徒に「閲覧者」の権限が設定されています。

  • 「01 ‐ 一郎…」が「個別ファイル」です。
    このファイルには、それぞれの生徒に「編集者」の権限が設定されています。当該生徒以外には、権限が設定されていないので、「まとめファイル」を通してのみ閲覧できるだけです。

生徒にはこのように共有される

「まとめファイル」は、対象となる生徒が「閲覧者」として設定され、1ページ目が表紙、2ページ目移行がそれぞれの生徒のスライドがリンク貼り付けされた状態となっています。
下図はセル H1 にテンプレートとなる Google スライドを設定してあるため、リンク貼り付けされたそれぞれのページ(スライド)には同じ内容がコピーされています。

「まとめファイル」の作成イメージ

(3) 個別ファイルからの反映

前述のように「個別ファイル」が更新されていれば、「まとめファイル」の該当ページ右上には、「更新」ボタンが表示されています。

更新されていれば、「まとめファイル」側では「更新」ボタンが表示される

それぞれのページで「更新」ボタンを押すことで、「個別ファイル」の内容が「まとめファイル」に反映され、他の生徒にもその内容が閲覧できるようになります。

個別に各ページで「更新」ボタンを押して回るのは面倒なので、画面の上部にあるメニューから「個別のプレゼンテーション」→「まとめファイルへの一括反映」を選択することで、すべてのページのリンク貼り付けを一括して更新できます。

「個別のプレゼンテーション」→「まとめファイルへの一括反映」を選択

ただし、GAS のプログラムによって 1ページずつ更新しているだけなので、すべてのページを更新するためには、相応の時間(おおよそ 1ページあたり数秒)を要します。

注意するポイントとしては、

  • 「更新」ボタンで更新されるのは、「個別ファイル」からリンク貼り付けされている当初の 1ページ目のスライドであり、スライドが追加され、スライドの順番が入れ替えられたりしても、更新元となるのは当初の 1ページ目のスライドである。
    また、同様に 2ページ目以降のスライドを作成していても、それらは反映されない。

  • 「更新」ボタンを押したタイミングの内容が「まとめファイル」に反映される。それ以降の変更は、再度「更新」ボタンを押さなければ反映されない。

  • 「更新」ボタンを押して反映することで、それぞれの生徒の編集内容が、他の生徒にも閲覧できるようになる。 ※生徒は、自分以外の生徒の「個別ファイル」に対するアクセス権は有していない。

  • 「まとめファイル」をプレゼンテーションしている最中に、「更新」ボタンを押しても、プレゼンテーション中の内容には反映されない。反映するためには、プレゼンテーションをやり直す必要がある。

という点です。

最後に

今回のプログラムは、GEG のイベントで使われていた利用方法を手軽に行えるように GAS でプログラム化してみました。このような段取り作業が簡単に行えるようになると、スムーズに使えるようになるのではないか、と思います。

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

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

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

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

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

いいなと思ったら応援しよう!