6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

GASでGoogle Slides のページをテンプレートから自動生成する方法

Last updated at Posted at 2022-01-18

#はじめに

社内のとある部門にお邪魔した際、多くの人がスプレッドシートからデータを手で拾って、プレゼン資料を独自に量産している様子が散見され、あまりに非効率に見えました。スプレッドシートの情報が更新されたらプレゼン資料も更新しなければならないのだとか。。

こんな非効率なことするぐらいなら自動生成してやろうと色々と調査したときの備忘録。

##やりたいこと

やりたいことをざっくりまとめると以下の3点。

  • その1 Google SlidesのプレゼンテーションをGoogle App Scriptで自動生成したい。  
  • その2 スライドのページはテンプレートから自動生成したい。
  • その3 スライド内の要素を任意の文字列に置換したい。

それでは早速やってみたいと思います。

##スライドテンプレートを用意する

まずはこんな感じで、新しいプレゼンテーションを作成します。
これは、GASで自動生成する際にフォントサイズや文字の配置といった要素の元となるテンプレートとになります。
スクリーンショット 2022-01-18 18.44.01.png
テンプレートが無いと文字列の位置、フォントサイズや色等をいちいちコードで調整する必要があるのでゼロからスライドを生成するよりもテンプレートを作っといたほうが楽です。

##スライドテンプレートに置換用文字列を追加する
さっき作ったスライドの文字列に当たる部分をテンプレートっぽい置換用の文字列にします。

スクリーンショット 2022-01-18 18.45.53.png
できました。

ここでは{{title}}と{{body}}を置換用文字列として追加してみました。
これでスライドのテンプレートは完成です。

テンプレートが出来上がったら、プレゼンテーションのURLを記録しておきます。
スクリーンショット 2022-01-18 19.06.01.png
この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の最近使ったファイルに「あたらしいスライド」というプレゼンテーションが生成されているはずです。

スクリーンショット 2022-01-18 23.47.26.png

プレゼンテーションを早速開いてみましょう。

スクリーンショット 2022-01-18 19.26.52.png

やったー、うまくいきましたね。
ここまでできれば、スプレッドシートのデータを読み込んで何ページもあるプレゼン資料を自動生成するのは簡単にできそうです。

#おわりに
このように、空のテンプレートからスライドを生成し、置換用文字列を任意の文字列に入れ替えることが簡単にできることがおわかりいただけたかと思います。

ちょっと応用すればQRコードを埋め込んだり、画像を入れ替えることも出来ます。
お試しあれー。

6
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?