GASでGoogleスライドのテキストボックスの文字列を取得する方法


text

photo credit: davidseibold Off To The Side via photopin (license)

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

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

前回の記事はこちら!

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

Googleスライドのテキストボックスや図形を表すシェイプとその取得方法についてお伝えしました。

操作対象となるシェイプがテキストボックスだった場合、その内部のテキストも操作したくなったりしますよね。

GASではShape内のテキストは「TextRangeオブジェクト」として扱います。

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

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

スポンサーリンク

前回のおさらい

前回作成したコードはこちら。

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];

}

プレゼンテーションをURLで開き、その1枚目のスライド上のシェイプを配列として取得。

そのシェイプの個数をログ出力するというものです。

配列なので、個々のShapeオブジェクトとして取り出すにはインデックスを指定する必要があって、インデックス0のシェイプを取り出したのが、10行目ということですね。

TextRangeオブジェクトとは

シェイプの文字列を取り出すんだったら、例えば「getText」的なメソッドで文字列を取得するようなことを期待しますね。

でも、残念ながらブッブー!

getTextメソッドは存在しますが、それで取得できるのは、文字列ではないのです。

というのも、シェイプ内のテキストって、純粋に文字列だけでなく、フォントの種類やサイズ、色など、様々な設定項目がありますよね。

なので、それらの情報も持っているオブジェクトとして、まずは取得しなければならないのです。

そのテキストに加えて書式設定情報を持つオブジェクトが、「TextRangeオブジェクト」というわけです。

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

お伝えした通り、getTextメソッドシェイプのTextRangeオブジェクトを取得するものです。

Shapeオブジェクト.getText()

それで取得できたTextRangeオブジェクトには、文字列のほか、さまざまな書式設定の情報を持っています。

TextRangeオブジェクトから文字列を取り出す

では、そのTextRangeオブジェクトから文字列を取り出すにはどうすればよいでしょうか?

そのためのメソッドが、TextRangeオブジェクトのasStringメソッドです。

TextRangeオブジェクト.asString()

シェイプからテキストの文字列を取り出すスクリプト

では、実際にコードを使って、シェイプからテキストの文字列を取り出してみましょう。

以下のようなスクリプトです。

function myFunction() {
  
  var url ='*****テンプレート用プレゼンテーションのURL*****';
  var presentation = SlidesApp.openByUrl(url);  
  var slide = presentation.getSlides()[0];
  var shapes = slide.getShapes();

  for (var i = 0; i < shapes.length; i++){
    var shape = slide.getShapes()[i];  
    Logger.log('シェイプ内の文字列: %s',shape.getText().asString());
  }

}

実行すると、以下のようなログ出力が得られました。

シェイプ内の文字列をログ出力

2つのシェイプがあってわかりづらい感じではありますが、実際のスライドでは以下のような対比になっています。

スライドとシェイプの対比

余談ですが、ページ番号はShapeオブジェクトからは取得できないんですかね(未確認)。

まとめ

以上、GASでGoogleスライドのテキストボックスの文字列を取得する方法をお伝えしました。

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

  • シェイプのgetTextメソッドで取得できるのはテキスト+書式設定などの情報を持つTextRangeオブジェクト
  • TextRangeオブジェクトから文字列を取得するのはasStringメソッド

次回は、オブジェクトIDについて解説します。

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

どうぞお楽しみに!

連載目次: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をコピーしました