GASでスプレッドシートの指定範囲からリッチテキスト情報を一括取得する方法

Googleスプレッドシートを使いこなしたいなら、”リッチテキスト” も避けては通れんばい。普通の文字列じゃなくて、部分的に太字にしたり、色を変えたり、リンクを仕込んだり……そんな高度な装飾を自在に操れると、シートの見栄えも格段にアップするっちゃね!

今回は、Google Apps Script(GAS)の getRichTextValues() メソッドを中心に、リッチテキストの扱い方を分かりやすく解説するけん、しっかりついてきてね。


スポンサーリンク

リッチテキストとは?

スプレッドシートのセルに書き込む文字列は、普通のテキスト(プレーンテキスト)とリッチテキストの2種類があるとばい。リッチテキストは、文字ごとに違うフォントや色、太字・斜体などのスタイル情報を持っとるとさ。

例えば、getValues() で取得できるのは単なる文字列ばってん、getRichTextValues() を使うと、書式情報も含めて取得できるけん、より柔軟な処理ができるとばい。

const range = sheet.getRange("A1:C3");
const richTextData = range.getRichTextValues();

これで、richTextData[row][col] にリッチテキスト情報がまるごと格納されるっちゃん。


リッチテキストの構造とスタイル管理

リッチテキストは RichTextValue オブジェクトとして扱われ、部分ごとに異なるスタイルを適用できるとよ。

getRuns() でスタイル情報を分解

リッチテキストのスタイルを細かく取得したいときは、getRuns() を使うとばい。

const runs = richTextValue.getRuns();
runs.forEach(run => {
  const style = run.getTextStyle();
  console.log(`Text: ${run.getText()}, Bold: ${style.isBold()}`);
});

こうすると、セル内の文字列のどこが太字か、色がついとるかが分かるけん、より細かい処理が可能になるばい。


リッチテキストの編集と適用

リッチテキストを作成する

GAS では newRichTextValue() を使って、新しくリッチテキストを作ることもできるっちゃね。

const builder = SpreadsheetApp.newRichTextValue()
  .setText("Hello World")
  .setTextStyle(0, 5, SpreadsheetApp.newTextStyle().setBold(true).build());
cell.setRichTextValue(builder.build());

この方法を使えば、「特定の単語だけ強調表示したい!」みたいなことも簡単にできるけん、便利やね。

文字列のスタイルを保持しつつ置換する

リッチテキストの内容を変更したいばってん、スタイルは維持したい! そんなときは、以下の方法を試してみるとよ。

function replaceTextKeepStyle(sheet, search, replace) {
  const range = sheet.getRange("A1:C3");
  const richTexts = range.getRichTextValues();

  richTexts.forEach((row, rowIndex) => {
    row.forEach((richText, colIndex) => {
      if (!richText) return;
      const newText = richText.getText().replace(new RegExp(search, "g"), replace);
      const builder = SpreadsheetApp.newRichTextValue().setText(newText);
      richText.getRuns().forEach(run => {
        builder.setTextStyle(run.getStartIndex(), run.getEndIndex(), run.getTextStyle());
      });
      richTexts[rowIndex][colIndex] = builder.build();
    });
  });
  range.setRichTextValues(richTexts);
}

これを使えば、「旧社名を新社名に変えたい!」みたいなシーンでも、太字や色をキープしたまま置換できるっちゃ。


リンク付きテキストを扱う

セル内の一部の文字にリンクを埋め込むことも可能ばい。

const builder = SpreadsheetApp.newRichTextValue()
  .setText("Google公式サイト")
  .setTextStyle(0, 6, SpreadsheetApp.newTextStyle().setLinkUrl("https://www.google.com").build());
cell.setRichTextValue(builder.build());

部分的にリンクを埋め込めるけん、「特定のキーワードにだけリンクをつける」とかも簡単にできるとよ。


まとめ

getRichTextValues() を使えば、スプレッドシートのセル内のリッチテキスト情報を取得して、スタイルを適用したり編集したりできるばい。

今回のポイントはコレ!

  • getRichTextValues() でリッチテキストを取得できる。
  • getRuns() で部分ごとのスタイル情報を取り出せる。
  • newRichTextValue() でリッチテキストを作成・編集できる。
  • スタイルを保持しながらテキストを置換することも可能。
  • ハイパーリンク付きテキストの処理もできる。

スプレッドシートをもっと使いこなしたいなら、このリッチテキスト機能は知っておくべきばい! ぜひ試してみてね!

コメント

タイトルとURLをコピーしました