GAS開発者向けにスプレッドシートのリッチテキスト機能をすべてまとめました。
セル値そのものではなく、セル内の一部分だけに色を付けられる意外と便利なリッチテキスト。確実に手動でやるよりGASを使った方が早くなりますね。
使いこなせば、きっとかゆいところに手が届きます。重要箇所だけ色付けて強調したい場面はたくさんあると思うので試してみましょう。
リッチテキストに関するメソッドをすべて載せてます。少しでも参考になれば幸いです。
Google Apps Script スプレッドシート 基礎 リファレンス
当ページは、GAS公式リファレンスを元にスプレッドシートの機能毎にまとめた基礎的な内容となっております。
若干、文言がおかしい可能性がありますが、あらかじめご了承ください。
GAS基本メソッドまとめ一覧はコチラ↓↓↓です。スプレッドシートの基本的な機能をまとめてますので、ぜひご活用ください。
まずは実際に動かしてみることをオススメします。マクロの登録方法は以下を参照いただければと思います。
GASの本はまだまだ少ないですね。基礎レベルであれば、以下の参考書が初心者にはベストの本です。
基本的な仕様やよく使われる機能の設定方法がまとまっています。
※JavaScriptの知識が既にある程度ある人にとっては冗長かもしれません。
スプレッドシートAPPクラス[SpreadsheetApp]のリッチテキスト作成
スプレッドシートAPPクラスのリッチテキスト作成です。
リッチテキストビルダー作成[newRichTextValue()]
newRichTextValue()
リッチテキスト値のビルダーを作成します。
function newRichTextValueSample() {
// セル「A1」を「Hello world」というテキストで太字の「Hello」で設定します。
var cell = SpreadsheetApp.getActive().getRange('A1');
var bold = SpreadsheetApp.newTextStyle().setBold(true).build();
var value = SpreadsheetApp.newRichTextValue()
.setText("Hello world")
.setTextStyle(0, 5, bold)
.build();
cell.setRichTextValue(value);
}
Return
RichTextValueBuilder - 新しいビルダー。
セル範囲クラス[Range]のリッチテキスト設定
セル範囲のリッチテキスト設定メソッドです。
リッチテキスト設定[setRichTextValue(値)]
setRichTextValue(value)
範囲内のセルのリッチテキスト値を設定します。
function setRichTextValueSample() {
// 範囲「B2:D4」のすべてのセルを「Hello world」というテキストに設定し、「Hello」を太字にします。
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getRange("B2:D4");
var bold = SpreadsheetApp.newTextStyle()
.setBold(true)
.build();
var richText = SpreadsheetApp.newRichTextValue()
.setText("Hello world")
.setTextStyle(0, 5, bold)
.build();
range.setRichTextValue(richText);
}
名前 | タイプ | 説明 |
---|---|---|
value | RichTextValue | 設定するリッチテキスト値。 |
Return
Range - 連鎖用のセル範囲。
参照:Google Apps Script | REFERENCE | SpreadSheet | Class Range | Methods | setRichTextValue(value)
リッチテキスト配列設定[setRichTextValues(値's)]
setRichTextValues(values)
リッチテキスト値の2次元配列を設定します。
function setRichTextValuesSample() {
// 範囲A1:A2のセルをリッチテキスト値に設定します。
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getRange("A1:A2");
var bold = SpreadsheetApp.newTextStyle()
.setBold(true)
.build();
var italic = SpreadsheetApp.newTextStyle()
.setItalic(true)
.build();
var richTextA1 = SpreadsheetApp.newRichTextValue()
.setText("This cell is bold")
.setTextStyle(bold)
.build();
var richTextA2 = SpreadsheetApp.newRichTextValue()
.setText("bold words, italic words")
.setTextStyle(0, 11, bold)
.setTextStyle(12, 24, italic)
.build();
range.setRichTextValues([[richTextA1], [richTextA2]]);
}
名前 | タイプ | 説明 |
---|---|---|
values | RichTextValue[][] | 設定するリッチテキスト値。 |
Return
参照:Google Apps Script | REFERENCE | SpreadSheet | Class Range | Methods | setRichTextValues(values)
セル範囲クラス[Range]のリッチテキスト取得
セル範囲のリッチテキスト取得メソッドです。
リッチテキスト取得[getRichTextValue()]
getRichTextValue()
範囲の左上のセルのリッチテキスト値を返します。セル値がテキストでない場合はnullを返します。
function getRichTextValueSample() {
// セルD4のリッチテキスト値を取得します。
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getRange("D4:F6");
var richText = range.getRichTextValue();
Logger.log(richText);
}
Return
RichTextValue - 範囲内の左上のセルのリッチテキスト値。セル値がテキストでない場合はnull。
参照:Google Apps Script | REFERENCE | SpreadSheet | Class Range | Methods | getRichTextValue()
リッチテキスト配列取得[getRichTextValues()]
getRichTextValues()
範囲内のセルのリッチテキスト値を返します。
function getRichTextValuesSample() {
// 範囲B5のすべてのセルのリッチテキスト値を取得します。C6
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getRange("B5:C6");
var values = range.getRichTextValues();
for (var i = 0; i < values.length; i++) {
for (var j = 0; j < values[i].length; j++) {
Logger.log(values[i][j]);
}
}
}
Return
RichTextValue[][] - リッチテキスト値の2次元配列。
参照:Google Apps Script | REFERENCE | SpreadSheet | Class Range | Methods | getRichTextValues()
リッチテキストクラス[RichTextValue]
セルテキストを表すために使用される様式化されたテキスト文字列。テキストの部分文字列は、いろんなテキストスタイルを持つことができます。
Runは同じテキストスタイルを持つ最長の切れ目のない部分文字列です。たとえば、「"This kid has two apples." 」という文は、4つの部分文字列: ["This ", "kid ", "has two ", "apples."]があります。。
参照:Google Apps Script | REFERENCE | SpreadSheet | Class RichTextValue
方法 | タイプ | 説明 |
---|---|---|
copy() | RichTextValueBuilder | このリッチテキスト値の値で初期化されたリッチテキスト値のビルダーを返します。 |
getEndIndex() | Integer | セル内のこの値の終了インデックスを取得します。 |
getRuns() | RichTextValue[] | Runの配列に分割されたリッチテキスト文字列を返します。各Runは、一貫したテキストスタイルを持つ可能な最も長い部分文字列です。 |
getStartIndex() | Integer | セル内のこの値の開始インデックスを取得します。 |
getText() | String | この値のテキストを返します。 |
getTextStyle() | TextStyle | この値のテキストスタイルを返します。 |
getTextStyle(startOffset, endOffset) | TextStyle | startOffsetからendまでのテキストのテキストスタイルを返します。 |
リッチテキストコピー作成[copy()]
copy()
このリッチテキスト値の値で初期化されたリッチテキスト値のビルダーを返します。
Return
RichTextValueBuilder - リッチテキスト値のビルダー。
リッチテキスト終了インデックス取得[getEndIndex()]
getEndIndex()
セル内のこの値の終了インデックスを取得します。
Return
Integer - セル内のこの値の終了インデックス。
配列分割リッチテキスト取得[getRuns()]
getRuns()
Runの配列に分割されたリッチテキスト文字列を返します。各Runは、一貫したテキストスタイルを持つ可能な最も長い部分文字列です。
Return
RichTextValue[] - Runの配列。
リッチテキスト開始インデックス取得[getStartIndex()]
getStartIndex()
セル内のこの値の開始インデックスを取得します。
Return
Integer - セル内のこの値の開始インデックス。
リッチテキスト取得[getText()]
getText()
この値のテキストを返します。
Return
String - この値のテキスト。
リッチテキストスタイル取得1[getTextStyle()]
getTextStyle()
この値のテキストスタイルを返します。
Return
TextStyle - この値のテキストスタイル。
リッチテキストスタイル取得2[getTextStyle(開始オフセット, 終了オフセット)]
getTextStyle(startOffset, endOffset)
startOffsetからendOffsetまでのテキストのテキストスタイルを返します。オフセットは0から始まり、セルのテキストを基準にしています。開始オフセットは両端を含み、終了オフセットは両端を含みます。
名前 | タイプ | 説明 |
---|---|---|
startOffset | Integer | 開始オフセット。 |
endOffset | Integer | 終了オフセット。 |
Return
TextStyle - この値の指定された部分文字列のテキストスタイル。
リッチテキストビルダークラス[RichTextValueBuilder]
リッチテキスト値のビルダー。
参照:Google Apps Script | REFERENCE | SpreadSheet | Class RichTextValueBuilder
方法 | タイプ | 説明 |
---|---|---|
build() | RichTextValue | このビルダーからRich Text値を作成します。 |
setText(text) | RichTextValueBuilder | この値のテキストを設定し、既存のテキストスタイルをクリアします。 |
setTextStyle(startOffset, endOffset, textStyle) | RichTextValueBuilder | この値の指定された部分文字列にテキストスタイルを適用します。 |
setTextStyle(textStyle) | RichTextValueBuilder | 値全体にテキストスタイルを適用します。 |
リッチテキスト構築[build()]
build()
このビルダーからRich Text値を作成します。
Return
RichTextValue - このビルダーから作成されたリッチテキスト値。
リッチテキスト設定[setText(テキスト)]
setText(text)
この値のテキストを設定し、既存のテキストスタイルをクリアします。新しいリッチテキスト値を作成するときは、setTextStyle(startOffset、endOffset、textStyle)の前にこれを呼び出す必要があります。
名前 | タイプ | 説明 |
---|---|---|
text | String | この値のテキスト。 |
Return
RichTextValueBuilder - 連鎖用のビルダー。
リッチテキストスタイル設定1[setTextStyle(テキストスタイル)]
setTextStyle(textStyle)
値全体にテキストスタイルを適用します。以前に設定されたテキストスタイルは、それらがtextStyle内の値によって直接上書きされた場合にのみ影響を受けます。 textStyleがnullの場合は何もしません。
function setTextStyle1Sample() {
// 太字で斜体文字の「Hello」を使用し、太字で斜体文字の「World」のみを使用して、テキスト「HelloWorld」のリッチテキスト値を作成します。
var bold = SpreadsheetApp.newTextStyle().setBold(true).build();
var italic = SpreadsheetApp.newTextStyle().setItalic(true).build();
var value = SpreadsheetApp.newRichTextValue()
.setText("HelloWorld")
.setTextStyle(0, 5, bold)
.setTextStyle(italic)
.build();
}
名前 | タイプ | 説明 |
---|---|---|
textStyle | TextStyle | 設定されているテキストスタイル。 |
Return
RichTextValueBuilder - 連鎖用のビルダー。
リッチテキストスタイル設定2[setTextStyle(開始オフセット, 終了オフセット, テキストスタイル)]
setTextStyle(startOffset, endOffset, textStyle)
この値の指定された部分文字列にテキストスタイルを適用します。オフセットは0から始まり、セルのテキスト値を基準にしています。 textStyleがnullの場合は何もしません。
function setTextStyle2Sample() {
// 太字の「Hello」でイタリック体の「World」で、テキスト「HelloWorld」のリッチテキスト値を作成します。
var bold = SpreadsheetApp.newTextStyle().setBold(true).build();
var italic = SpreadsheetApp.newTextStyle().setItalic(true).build();
var value = SpreadsheetApp.newRichTextValue()
.setText("HelloWorld")
.setTextStyle(0, 5, bold)
.setTextStyle(5, 10, italic)
.build();
}
名前 | タイプ | 説明 |
---|---|---|
startOffset | Integer | サブストリングの開始オフセット(両端を含む)。 |
endOffset | Integer | サブストリングの終了オフセット(これを含まない)。 |
textStyle | TextStyle | 設定されているテキストスタイル。 |
Return
RichTextValueBuilder - 連鎖用のビルダー。
最後に
GASリッチテキスト機能のまとめをご紹介させていただきました。
必要に応じて、有益な情報でさらに更新していきたいと思います。
プログラミングスキルを向上させるためには、本を読むだけでは脳にインプットされませんね。
実際に手を動かしてアウトプットしまくるのが一番の近道だと思います。
実際にサンプルソースをコピーして実行した結果がどうなるかを体験してみてください。
自分なりのアレンジを加えたり、なぜエラーになるのかを考え、何度も試行錯誤して問題を解決しまくり、着実に理解しながらスキルを向上させていきましょう。
GASはExcelVBAとはかなり違いますが、ベースとなっているJavaScriptは覚えて損はないプログラミング言語なのでショートカットキーなどと組み合わせてぜひ活用してみてください。
Googleスプレッドシート全ショートカットキー一覧はこちら↓↓↓
ショートカットキー一覧にもGASメソッドを載せています。どの操作からどのメソッドが呼ばれるのかイメージしてください。
コメント