#はじめに
社内のとある部門にお邪魔した際、多くの人がスプレッドシートからデータを手で拾って、プレゼン資料を独自に量産している様子が散見され、あまりに非効率に見えました。スプレッドシートの情報が更新されたらプレゼン資料も更新しなければならないのだとか。。
こんな非効率なことするぐらいなら自動生成してやろうと色々と調査したときの備忘録。
##やりたいこと
やりたいことをざっくりまとめると以下の3点。
- その1 Google SlidesのプレゼンテーションをGoogle App Scriptで自動生成したい。
- その2 スライドのページはテンプレートから自動生成したい。
- その3 スライド内の要素を任意の文字列に置換したい。
それでは早速やってみたいと思います。
##スライドテンプレートを用意する
まずはこんな感じで、新しいプレゼンテーションを作成します。
これは、GASで自動生成する際にフォントサイズや文字の配置といった要素の元となるテンプレートとになります。
テンプレートが無いと文字列の位置、フォントサイズや色等をいちいちコードで調整する必要があるのでゼロからスライドを生成するよりもテンプレートを作っといたほうが楽です。
##スライドテンプレートに置換用文字列を追加する
さっき作ったスライドの文字列に当たる部分をテンプレートっぽい置換用の文字列にします。
ここでは{{title}}と{{body}}を置換用文字列として追加してみました。
これでスライドのテンプレートは完成です。
テンプレートが出来上がったら、プレゼンテーションのURLを記録しておきます。
このURLは後でコード内でテンプレートを指定する際に使います。
##要素をGASで置換する
テンプレートの次は、テンプレートからスライドを生成し、文字列を置換するコードを書きます。
さっき記録したテンプレートスライドURLをここで使用します。
function myFunction() {
//生成元となるデザインテンプレートURL
var templateSlideUrl = 'https://docs.google.com/presentation/d/xxxxxxxxxxxxxxxxx';
//生成元のスライドテンプレートを開く
var templateSlidesApp = SlidesApp.openByUrl(templateSlideUrl);
//生成先のスライド
var newPresentation = SlidesApp.create('あたらしいスライド');
//テンプレートの1ページ目からスライドをコピーして自動生成スライドの最終ページに挿入
var newSlide = newPresentation.appendSlide(templateSlidesApp.getSlides()[0]);
//文字列置換
newSlide.replaceAllText('{{title}}','タイトルだよー');
newSlide.replaceAllText('{{body}}','本文でござる。本文は長いのでござる。');
}
##実行結果
実行すると自分のGoogleDriveの最近使ったファイルに「あたらしいスライド」というプレゼンテーションが生成されているはずです。
プレゼンテーションを早速開いてみましょう。
やったー、うまくいきましたね。
ここまでできれば、スプレッドシートのデータを読み込んで何ページもあるプレゼン資料を自動生成するのは簡単にできそうです。
#おわりに
このように、空のテンプレートからスライドを生成し、置換用文字列を任意の文字列に入れ替えることが簡単にできることがおわかりいただけたかと思います。
ちょっと応用すればQRコードを埋め込んだり、画像を入れ替えることも出来ます。
お試しあれー。