libro
www.tuyano.com
初心者のためのGoogle Apps Scriptプログラミング入門

Googleドキュメントにアクセスする (5/6)

作成:2011-08-08 09:15
更新:2011-11-04 17:04

■TextとTextElement

既に作成されているパラグラフのテキストを変更する場合は、注意が必要です。Paragraphのテキストをそのまま変更するようなやり方はできません。ParagraphからTextをとり出し、そのTextのテキストを変更する、というやり方になるのですね。

まずは、テキストを置換して置き換えるというやり方から説明しましょう。これはParagraphに用意されているメソッドを用います。

・テキストを検索置換する
変数 =《Paragraph》.replaceText( パターン, テキスト );
このreplaceTextは、パラグラフ内から第1引数に指定されたパターンを検索し、その該当するテキストを置換するというものです。第1引数には、単に検索文字列を指定する他、Javaスタイルの正規表現パターンなどが利用できます。第2引数には置換テキストを指定します。――また、Textに用意されているメソッドを使い、Textのテキストを操作することもできます。

・テキストの操作
変数 =《Text》.geText();
変数 = 《Text》.setText( テキスト );
これはとても簡単ですね。これで「Paragraphからテキストを検索置換する」「Textのテキストを設定する」ということができるようになりました。――しかし、Textをうまく扱うためには、Paragraph内から必要なTextを取り出す方法も合わせて覚えておかないといけません。

・ParagrapからElementを取得する
変数 =《Paragraph》.findText( パターン );

・ElementからTextElementを取得する
変数 =《Element》.getElement();
パラグラフ内から、指定したテキストを含む要素を取り出すのが、findElementです。
Paragraphから、引数で指定したパターンを含む要素を検索し、その結果を「SearchResult」というオブジェクトとして返します。

このSearchResultは、検索結果に関する情報を管理するもので、そこから検索されたオブジェクトを以下のようにしてとり出します。

・検索されたオブジェクトを得る
変数 =《SearchResult》.getElement();
これで得られるオブジェクトは「Element」というものです。Elementとは、Paragraphに含まれる様々な要素を示すものです。このElementのサブクラスとして各種のオブジェクトが用意されています。テキストのオブジェクトは「TextElement」というものになります。

このTextElementは、Textとほとんど同じ感覚で扱うことができるようです。Google Apps Scriptのドキュメントには、まだElement関係が掲載されていないため、詳細はよくわからないのですが……。基本的な属性操作のためのメソッド類は、Textと同様に機能するようです。(同じものなのかも知れません)

つまり、パラグラフから必要なテキストを探しだして操作する場合には、「findTextSearchResultを得る」「SearchResultからElementを得る」「得られたElementTextElementというものなので、Textと同じ感覚で利用できる」――ということになります。ややこしいですね。

では、これらを利用し、パラグラフよりさらに細かくテキストを操作するサンプルを挙げておきましょう。例によって、openByIdの引数にはそれぞれのドキュメントのIDを指定して下さい。

これは前回のサンプルを更に修正したものです。下のリストでは、「Welcome to Google Apps Script.」という1文(パラグラフ)のテキストを3つの色に分けて表示します。なおかつ、Googleを「★GOOGLE★」と入れ替えています。Textにより、だいぶ細かくテキストが操作できるようになったことがわかるでしょう。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

function makeParagraph(){
  var doc = DocumentApp.openById("……IDを指定……");
  var p = doc.appendParagraph("");
  var t1 = p.appendText("Welcome to ");
  t1.setForegroundColor("#FF0000").setFontSize(24);
  var t2 = p.appendText("Google ");
  t2.setForegroundColor("#00FF00").setFontSize(24);
  var t3 = p.appendText("Apps Script.");
  t3.setForegroundColor("#0000FF").setFontSize(24);
  var res = p.findText("Goo");
  var txt = res.getElement();
  txt.setText("★GOOGLE★ ");
  txt.setBold(true);
  txt.setForegroundColor("#FFFFFF");
  txt.setBackgroundColor("#00FF00");
  res = p.replaceText("Apps","[APPS]");
}

※関連コンテンツ

「初心者のためのGoogle Apps Scriptプログラミング入門」に戻る