#84 スライドの内容をスプレッドシートに書き出す(スピーカーノート、サムネイル画像)
Google スライドで、プレゼンテーション資料を作成しようとするときに、どのような流れで作業を進めていきますか? プレゼンテーションの規模や内容にもよりますが、わたしは、
プレゼンテーションの流れを考える
プレゼンテーション資料を作成する
実際に話す内容を考える
全体を見直し、適宜修正
といった流れで作成しています。プレゼンテーションで表示されるスライドは、朗読原稿ではないので、こんな感じで問題ないと思っています。
こうやって進めていくときに、上記の 3. のところでスライド下部に表示されている「スピーカーノート」に発表原稿を入力していきます。
このとき、前後のスライドのスピーカーノートも参照できていれば、よりスムーズに進められると思いませんか?
また、作成したプレゼンテーションのスライドを画像として保存しようとしても、「JPEG 画像」「PNG 画像」として書き出すときには、1枚ずつ保存しなければなりません。こんな操作もスムーズにできないでしょうか?
作成したプログラム
前述の不満を解消するために、指定した Google スライドに対して、
スピーカーノートをスプレッドシートに書き出す
スプレッドシートで作成したスピーカーノートをスライドに書き戻す
各スライドのサムネイル画像を PNG 画像として保存する
サムネイル画像を、スピーカーノートと並べて表示する。 ※IMAGE 関数
という操作を、GAS のプログラムで実行できるようにしました。
使用する場合には、対象となる Google アカウントでログインした状態で、以下の URL にアクセスして、スプレッドシートをコピーしてください。
利用件数を確認するために Bitly の短縮 URL で掲載するようにしました。
※公開時、URL が別のファイルのものになっていましたごめんなさい。
プログラムをはじめて実行する際には、アカウントによる確認作業が必要になります。詳しくは以下の投稿をご覧ください。
プログラムの使い方
このプログラムを使うときは、セル B1 に処理対象となる Google スライドの「ファイル ID」を指定します。
「ファイル ID」は、下図のような Google スライドの URL であれば、「1nKFBc---tgM7qAlMJVM34H9JFO5PbzyEWSQcjvRx3PQ」の部分となります。この内容を、セル B1 に入力します。
その後、メニューから「スピーカーノート操作」→「ID の確認」を選択すると、セル C1 に指定した Google スライドのファイル名が表示されます。
この内容で指定した「ファイル ID」が間違っていないかを確認してください。
「シートに取得」を選択すると、
指定したスライドのスピーカーノートが、スプレッドシートの列 B に書き出されます。
それぞれのスライドのサムネイル画像がマイドライブに保存され、列 C に IMAGE 関数によって表示されます。
保存されたサムネイル画像は、Google スライドが保存されているフォルダに、Google スライドのファイル名でフォルダを作成して、その中に保存されます。
列 C は、幅 320px、高さ 180px に設定され、サムネイル画像を IMAGE 関数で表示します。スピーカーノートの内容によっては、行の高さは 180px 以上になる場合があります。
この処理を行うと、現在のスプレッドシートの内容はクリアされます。 ※後述の「シートのクリア」を実行したのちに、上述の処理が行われます。
「スライドへ書き出し」を選択すると、スプレッドシートに設定されている内容を、それぞれのスライドのスピーカーノートとして書き出します。
いずれの処理(「シートに取得」「スライドへ書き出し」)も、指定されている Google スライドのスライド枚数に応じて処理するため、スプレッドシートにスライド枚数以上のスピーカーノートが設定されていても、スライド枚数分しか処理されません。
「シートのクリア」を選択すると、シートの内容がセル B1 を除いてクリアされます。
注意点
それぞれの処理を行う際に、ダイアログを表示するなどして実行確認を行っていません。「シートに取得」「スライドへ書き出し」の順序を間違えると、入力したスピーカーノートが消えてしまうかもしれないので、プログラムの取り扱いについては注意してください。
スプレッドシートに書き出された内容には、ハイパーリンクや装飾などの情報は含まれていません。「シートに取得」「スライドへ書き出し」を行うことで、スライド側のスピーカーノートが、シンプルなテキストになってしまいます。
「シートに取得」でそれぞれのスライドのサムネイル画像を生成していますが、以下の URL で説明されている API を利用しています。
この API は「expensive read request」として扱われるもので、処理対象となるスライド枚数が多い場合には、「429: Too many requests」といったエラーが発生する可能性があります。1分あたり 60回以上のリクエストを行うと制限がかけられるようですが、順番に処理を行っていると実効速度的には、制限が課されてしまうほどのスループットが得られないようなので、意図的なウェイト処理(待ち時間)は設けてありません。 ※サムネイル画像の生成に時間がかからないような、シンプルなプレゼンテーションでかつ、制限に抵触するような大量のスライドの場合には注意してください。
前項の API で生成したサムネイル画像は 30分しか有効でないようなので、自身のマイドライブに保存し直し、IMAGE 関数で扱えるように「リンクを知っている全員」に閲覧権限を設定しています。
マイドライブに保存したサムネイル画像は、以下のように保存されます。
Google スライドが保存されているフォルダに「Google スライドのファイル名」のフォルダが作成される。
「PNG 画像」として保存される。
「スライド番号」と「Google スライドのファイル名」を連結したファイル名が設定される。
このプログラムでは、生成したサムネイル画像を削除する機能を備えていません。前項のように生成したサムネイル画像は、専用のフォルダを作成してまとめてあるので、手作業で削除するなりしてください。
実際のプログラム
実際のプログラムは、以下のような 160行くらいとなっています。
最後の方の searchFolder 関数は、以前に作成したプログラムからコピペしたものです。
スプレッドシート用に作成したプログラムで、Class Spreadsheet が与えられることを想定していますが、スライドの Class Presentation を引数に与えても、問題なく動作しているので、コメントなどを変更することなくそのままコピペしてあります。そのため、プログラム中のコメントでは「スプレッドシート」と表記してありますが、「プレゼンテーション」を処理しています。
関数に与えられた引数 ss に対して、getName と getId を実行していますが、これらの関数が「スプレッドシート」と「プレゼンテーション」で同様に提供されているので、問題なく動作しているのだと思います。
確認していませんが、「ドキュメント」でも同様に処理できるはずです。
GAS のプログラムで、処理に伴ってファイルを作成するのであれば、このように処理の起点となるファイルと同じフォルダにまとめるようにしておくと、乱雑にならずに整理できていいと思います。
最後に
今回のプログラムは、わたし自身が Google スライドでプレゼンテーションを作っていて、冒頭に書いたような「もっと、○○○○だったらいいのに」と感じたことを解消するために作ってみたものです。
与えられた方法をなぞるだけでなく、こんな風に問題意識・改善意識を持つことが大切なんだろうな、と思います。
最後に、お決まりのフレーズなどを書いておきます。
一応の動作確認は行っているものの、不慮のトラブルによって損害等が生じても、責任はとれませんので予めご了承ください。
コメントを含めても 160行くらいのスクリプトであり、実行に際して目的外の場所への書き出しや収集などは行っていません。
特別なエラー処理は行っていないので、意図しないケースでエラーが発生してしまうかもしれません。どうにもならない場合には、ご連絡ください。
わたし自身にしてみると、このような「スクリプトを作ること」が目的になっているような感じですが、このスクリプトが何かの役に立てば幸いです。
「スキ ♡」を押してもらえると、このようなプログラム作成の励みになります。😍
この記事が気に入ったらサポートをしてみませんか?