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()
でリッチテキストを作成・編集できる。- スタイルを保持しながらテキストを置換することも可能。
- ハイパーリンク付きテキストの処理もできる。
スプレッドシートをもっと使いこなしたいなら、このリッチテキスト機能は知っておくべきばい! ぜひ試してみてね!
コメント