みんな、スプレッドシートでリッチテキストを扱ったことあるかい?普通のgetValue()
じゃ取得できない文字の装飾やリンク情報を、プログラムで操作したいってこと、あるよね?そんなときに活躍するのがgetRichTextValue()
メソッドばい!
今回は、このメソッドの使い方や応用テクニックを、わかりやすくまとめてみたけん、一緒に学んでいこうじゃ!
そもそもリッチテキストって?
Googleスプレッドシートのセルに入力するテキストは、単なる文字列じゃなくて、太字・斜体・色付き・リンク付き なんかの装飾をつけることができるっちゃね。こういう装飾付きの文字を「リッチテキスト」って呼ぶんじゃ。
でも、getValue()
でセルの値を取得すると、装飾が消えてしまうっちゃ。ここで登場するのがgetRichTextValue()
メソッドたい!
getRichTextValue()の基本
このメソッドを使えば、セル内のリッチテキスト情報をRichTextValue
オブジェクトとして取得できるっちゃ。実際にコードを書いてみよう。
const range = SpreadsheetApp.getActiveSheet().getRange("A1");
const richText = range.getRichTextValue();
console.log(richText.getText()); // 純粋なテキスト
console.log(richText.getTextStyle().isBold()); // 太字かどうか
getText()
を使えば普通の文字列を取得できるし、getTextStyle()
を使えば装飾の詳細が取れるっちゃ。
部分的なスタイルを取得する方法
リッチテキストのすごいところは、セル内の一部だけに装飾を適用できることじゃね。例えば、「GAS」だけ太字 みたいなことができるばい。
const style = richText.getTextStyle(1, 4);
console.log(style.getFontSize()); // 2-4文字目のフォントサイズ
オフセット(開始位置)と長さを指定すると、その範囲だけのスタイルを取得できるっちゃ。これは細かいデザイン制御をしたいときに便利ばい!
ハイパーリンクの取得方法
スプレッドシートのセルにURLを貼り付けると、リンクになるばい。getRichTextValue()
を使うと、そのリンク情報も取れるっちゃ。
const linkUrl = richText.getLinkUrl();
if (linkUrl) {
console.log(`リンク先: ${linkUrl}`);
}
でもね、セル内に複数のリンクがあるとgetLinkUrl()
はnull
を返すんじゃ。その場合は、getRuns()
を使って個別に取得する方法もあるばい!
richText.getRuns().forEach((run, index) => {
console.log(`ラン${index+1}: ${run.getText()}`);
console.log(` URL: ${run.getLinkUrl()}`);
});
getRuns()
を使うと、装飾ごとに分割された「ラン」を配列で取得できるっちゃ。これを活用すれば、細かくリッチテキストを解析できるばい!
ちょっとした落とし穴と対策
1. 日付や数値は取得できない
getRichTextValue()
は、日付や数値が入ったセルではnullを返す ことがあるんじゃ。これを回避するには、一時的にセルのフォーマットを変更するといいばい。
function handleDateCell() {
const range = SpreadsheetApp.getActive().getRange('A1');
const originalFormat = range.getNumberFormat();
range.setNumberFormat('@'); // 文字列フォーマットに変更
const richText = range.getRichTextValue();
console.log(richText.getText());
range.setNumberFormat(originalFormat); // 元のフォーマットに戻す
}
2. 大量のデータを扱うと処理が遅くなる
大量のセルを1つずつ処理すると、スクリプトの実行時間が長くなってしまうっちゃ。こういうときは、バッチ処理 を活用するといいばい。
function batchProcessing() {
const sheet = SpreadsheetApp.getActiveSheet();
const dataRange = sheet.getRange('A1:C100');
const richTextValues = dataRange.getRichTextValues();
const processedData = richTextValues.map(row =>
row.map(cell => ({
text: cell.getText(),
hasLink: !!cell.getLinkUrl()
}))
);
console.log(processedData);
}
getRichTextValues()
を使って、一気に取得すれば高速に処理できるっちゃ!
まとめ
getRichTextValue()
を使えば、スプレッドシートの装飾付きテキストをプログラムで自由に扱えるばい。特に、
- 文字の装飾を取得する
- ハイパーリンクを抜き出す
- ラン単位でテキストを解析する
- バッチ処理で高速化する
こんなことができるのが強みじゃね!
これを活用すれば、デザイン校正ツールや自動レポート生成ツールなんかも作れるばい。ぜひ、色々試してみてちょうだい!


みんなもgetRichTextValue()
を使いこなして、スプレッドシートのプロになろうばい!
コメント