GASでGoogleスライドのテキストボックスや図形などを取得する方法

shapes

photo credit: FolsomNatural shapes1 via photopin (license)

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

GASでGoogleスライドのプレゼンテーションを楽々作成するテクニックについてシリーズでお伝えしています。

前回の記事はこちら!

GASでGoogleスライドのSlideオブジェクトの概要とその取得方法
GASでGoogleスライドのプレゼンテーションを楽々作成するテクニックについてシリーズでお伝えしています。今回は、GASでGoogleスライドのSlideオブジェクトの概要とその取得方法です。

GoogleスライドのSlideオブジェクトとその取得方法についてお伝えしました。

Slideオブジェクトはまさに一枚一枚のスライドを表すオブジェクトなのですが、実際にはそのスライド上のテキストボックスだったり、図形だったりを操作することも多くありますよね。

それらを「シェイプ」といい、GASのSlidesサービスでは、それらを「Shapeオブジェクト」として扱います。

ということで、今回はGASでGoogleスライドのテキストボックスや図形などを取得する方法についてお伝えします。

では、行ってみましょう!

スポンサーリンク

前回のおさらい

では、まず前回のおさらいから。

前回作成したスクリプトはこちらです。

function myFunction() {
  
  var url ='*****テンプレート用プレゼンテーションのURL*****';
  var presentation = SlidesApp.openByUrl(url);
  var slides = presentation.getSlides();
  Logger.log('スライドの枚数: %s',slides.length);

  var slide = slides[0];

}

プレゼンテーションをURLで特定して開き、そのすべてのスライドを配列として変数slidesに格納します。

その配列の要素数、つまりスライド数をログ出力するというものですね。

そして、配列からひとつ目のインデックス0の要素を取得したのが、8行目ということになります。

PageElementオブジェクトとは

このようにしてスライドをSlideオブジェクトとして取得できましたが、そのスライド上には、テキストボックスや画像などの色々な「もの」が配置されていますよね。

GASのSlidesサービスでは、それをPageElementオブジェクトとして扱います。

ですが、PageElementオブジェクトは、種類に応じて以下のように分かれています。

オブジェクト 説明
Shapeオブジェクト テキストボックス、図形などのシェイプ
Lineオブジェクト
Imageオブジェクト 画像
SheetChartオブジェクト スプレッドシートからインポートされたグラフ
Videoオブジェクト 動画
Tableオブジェクト
WordArtオブジェクト ワードアート
Groupオブジェクト グループ化されたPageElementオブジェクト

えー、たくさんあってヤダ~となるかも知れませんね。

その通りです!

Slideオブジェクトから、スライド上のPageElementオブジェクトを配列としてまとめて取得することもできますが、いろいろな種類のオブジェクトが混在するので、かえって扱いづらいです。

そんなときには、目的の種類のオブジェクトだけを選別して取得することができます。

他のオブジェクトについては、そのあとに必要に応じて調べてマスターしていけばOK!

Shapeオブジェクトを取得する

例えば、PageElementオブジェクトの中で最も操作することが多いのは、テキストボックスや図形などの「シェイプ」を表すShapeオブジェクトです。

テキストボックスを取得して、そのテキストを入力・変更したり、フォントに変更を加えたり…といった操作が予想されますね。

Slideオブジェクトが取得できているとして、その配下のShapeオブジェクトを取得するには、getShapesメソッドを使います。

Slideオブジェクト.getShapes()

「getShapes」とある通り、このメソッドは複数のShapeオブジェクトを配列として取得します。

では、試しに以下のスクリプトを実行してみましょう。

function myFunction() {
  
  var url ='*****テンプレート用プレゼンテーションのURL*****';
  var presentation = SlidesApp.openByUrl(url);
  var slide = presentation.getSlides()[0];
  var shapes = slide.getShapes();
  
  Logger.log('シェイプの個数: %s',shapes.length);
  
  var shape = shapes[0];

}

実行後にログを確認すると、以下のように変数shapesに含まれる要素数、つまりスライドに含まれるシェイプの数を確認することができます。

スライドに含まれるシェイプの個数をログ出力
そして、10行目では、インデックス0のShapeオブジェクトを取り出しています(ここでは、どのシェイプを表すのか、いまいちわかりませんが…)。

まとめ

以上、GASでGoogleスライドのテキストボックスや図形などを取得する方法についてお伝えしました。

ポイントは以下のとおりです。

  • Shapeオブジェクトはテキストボックスや図形などのシェイプを表す
  • シェイプはSlideオブジェクトのgetShapesメソッドで取得する
  • 取得したシェイプは配列

では、次回取得したシェイプのテキストの取り出し方について見ていきましょう。

GASでGoogleスライドのテキストボックスの文字列を取得する方法
GASでGoogleスライドのプレゼンテーションを楽々作成するテクニックについてお伝えしています。今回はGASでGoogleスライドのTextRangeオブジェクトの概要とその取得方法についてです。

どうぞお楽しみに!

連載目次:GASでGoogleスライドのプレゼンテーションを楽々作成

定例会議用資料、レポート、プレゼンテーションなど、テンプレートをもとにGoogleスライドのプレゼンテーションを作るというお仕事はけっこうあります。全部は無理にしても、いくつかの段取りは、GASを使って自動化できるかも…!?このシリーズでは、そのようなGoogleスライドのプレゼンテーション自動化のアイデアと、スクリプトの書き方を紹介します!
  1. GASでGoogleスライドのプレゼンテーションを操作するはじめの一歩
  2. GASでGoogleスライドを操作するSlidesサービスの基礎の基礎
  3. GASでGoogleスライドのSlideオブジェクトの概要とその取得方法
  4. GASでGoogleスライドのテキストボックスや図形などを取得する方法
  5. GASでGoogleスライドのテキストボックスの文字列を取得する方法
  6. GASでGoogleスライドの特定のシェイプをオブジェクトIDで取得する方法
  7. GASでGoogleスライドのシェイプのテキストを置換する方法
  8. GASでスプレッドシートのデータをもとにGoogleスライドの文字列を置換する
  9. GASでGoogleスライドのプレゼンテーションをコピーする方法
  10. GASでコピーしたGoogleスライドのプレゼンテーションを取得する方法
タイトルとURLをコピーしました