GASでスプレッドシートの指定セルからフォントや装飾など書式情報を取得する方法

Google Apps Script(GAS)って、スプレッドシートをプログラムで操るための便利なツールじゃけ、今回はその中でも特に便利なgetTextStyle()メソッドを深掘りしていくよ。このメソッドを使えば、スプレッドシートのセルに設定されたテキストのスタイル(フォント、色、太さなど)を取得して、さまざまな使い方ができるんよね。初心者でもわかるように解説するけん、ぜひ見ていってな!

スポンサーリンク

getTextStyle()メソッドってなに?

getTextStyle()メソッドは、Googleスプレッドシートのセル内に設定されたテキストの書式情報を取得するためのメソッドばい。これを使うことで、セルの文字のフォントや色、サイズなどの情報をプログラムから取得して、カスタマイズしたり、他のシートに転送したりできるんよ。

例えば、以下のコードを使えば、セルのフォントサイズを取得することができるけ。

const textStyle = range.getTextStyle();
console.log(textStyle.getFontSize()); // フォントサイズ取得

これが一番シンプルな使い方やけど、これだけでもスプレッドシートの操作がずっと楽になるんよね。

リッチテキストの操作方法

次に、ちょっと高度な使い方についても触れていくけん、リッチテキストって知っとるかい?これは、セル内でフォントが異なったり、太字や斜体が混じってるようなテキストのことよ。こうしたテキストを扱うには、getRichTextValue()メソッドと組み合わせて使うんじゃ。

例えば、「HelloWorld」みたいなテキストがあったとき、その中の「Hello」と「World」を別々に書式を取り出すことができるんよ。以下のコードで、テキストの書式を個別に取得できるけ。

const richText = range.getRichTextValue();
const runs = richText.getRuns();

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

これを使えば、リッチテキストの書式を細かく処理できるようになるんよね。

条件付き書式の解析方法

スプレッドシートでは、条件付き書式っていう機能もあるんよ。たとえば、特定の条件を満たしたときにセルの文字色を赤にしたり、太字にしたりする機能じゃけど、この条件付き書式とgetTextStyle()を組み合わせることで、どんな条件で書式が変更されたのかを確認できるんよ。

例えば、以下のようにコードを書くことで、条件付き書式が適用されたセルを探せるけ。

const rules = sheet.getConditionalFormatRules();
rules.forEach(rule => {
  const styles = rule.getTextStyles();
  styles.forEach(style => {
    if(style.isBold()) {
      console.log('条件付きの太字が検出されました');
    }
  });
});

これで、条件に基づいた書式を検出できるようになるんよ。

パフォーマンスを上げるテクニック

getTextStyle()を使っていると、複数セルの書式情報を取得したいときに、パフォーマンスが気になることがあるけど、そんなときには一度に複数セルの書式を取得できるgetTextStyles()メソッドを使うといいんよ。これを使うことで、大量のデータを効率的に処理できるけ。

例えば、次のようにコードを書けば、複数セルの書式を一度に取得できるんじゃ。

const stylesMatrix = range.getTextStyles();
stylesMatrix.forEach((row, rowIndex) => {
  row.forEach((style, colIndex) => {
    if(style.isItalic()) {
      console.log(`イタリック体が見つかった場所: ${rowIndex}, ${colIndex}`);
    }
  });
});

この方法で、複数セルの書式をまとめて取得できるから、APIの呼び出し回数を減らしてパフォーマンスを向上させることができるんよ。

他のサービスとの連携

Google Apps Scriptでは、スプレッドシートの書式情報を他のGoogleサービスと連携させることもできるけ。例えば、スプレッドシートの書式をGoogleスライドに転送したいとき、以下のようにコードを書けば、スライドのテキストにスプレッドシートの書式を適用できるんよ。

const slideText = slideShape.getText();
const spreadsheetStyle = sheet.getTextStyle();

slideText.getTextStyle()
  .setFontFamily(spreadsheetStyle.getFontFamily())
  .setFontSize(spreadsheetStyle.getFontSize())
  .setBold(spreadsheetStyle.isBold());

この方法で、スライドにもスプレッドシートの書式を反映させることができるけど、リッチテキストの部分書式転送には限界があるから注意が必要やけ。

まとめ

今回は、Google Apps ScriptのgetTextStyle()メソッドを活用して、スプレッドシートの書式を自在に操作する方法を解説したけど、これを使いこなすことで、より効率的にシートを管理できるようになるんよ。特にリッチテキストの処理や、条件付き書式の解析、大規模データの取り扱いにおいて、その真価を発揮するけね。

今後はさらに、機械学習を活用して自動書式最適化なんてこともできるようになるかもしれんよ。Google Apps Scriptをうまく使って、より便利なツールを作ってみてな!

Class TextStyle  |  Apps Script  |  Google for Developers

Class Range  |  Apps Script  |  Google for Developers

【GAS】スプレッドシートのリッチテキスト機能まとめ【サンプルソース付】
GAS開発者向けにスプレッドシートのリッチテキスト機能をすべてまとめました。セル値そのものではなく、セル内の一部分だけに色を付けられる意外と便利なリッチテキスト。確実に手動でやるよりGASを使った方が早くなりますね。使いこなせば、きっとかゆ

セルの文字色を取得する
日々Google Apps Scriptを書く中で、気づいたことや作ったものなどを更新しています。

Spreadsheet Service  |  Apps Script  |  Google for Developers

【GAS】スプレッドシートのテキストスタイル機能まとめ【サンプルソース付】
GAS開発者向けにスプレッドシートのテキストスタイル機能をすべてまとめました。フォント設定の機能の色、字体、太字、斜体、下線、サイズなどの全般機能です。設定だけでなく、現在の確認処理なども含みます。全部まとめたら随分と長くなってしまいました

How to get TextStyles/Attributes (fontColor, fontFamily, etc.) of a Googlesheet cell in AppScript, then set it in a Table
I have a Script in Googlesheets that is suposed to use the sheet as a modifiable template (colors and font should be mod...

[GAS]フォントやフォントの色・線・斜体などを取得・設定する方法 -Rangeクラス-|テックアップライフ
Google Apps Script (GAS) でこのセル範囲のフォントや、色・線・斜体などのフォント関連の設定を取得

コメント

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