セルの特定の文字だけ色を変更したいです。
あるセルに『赤・青・緑・黄』と入力されていて、
赤は赤字、青は青字、緑は緑字、黄は黄字にしたいです。
GASは初心者の為、コードを書いてくださると助かります。
よろしくお願いします。
追記
下記のコードにて、キーワードを赤のみに変更して実行
次にキーワードを青のみに変更して実行
すると、セルの中に『赤青』が入ってる場合、赤しか赤字にならない。
同一セルに対象の文字列が含まれる場合どうも上手くいかず、理由が分かりません。
Googleスプレッドシートで、特定の列全体のセル内の特定の単語だけ着色したい
https://teratail.com/questions/173480
function ChangeKeyWordColor() {
// 列の指定 1→A列、2→B列、3→C列・・・
var col = 3;
// 色の指定
var color = '#ff0000';
// キーワードの指定
var keywords = ['あいうえお', 'かきくけこ', 'さしすせそ'];
var sheet = SpreadsheetApp.getActiveSheet();
var last_row = sheet.getLastRow();
var row = 1;
var values = sheet.getRange(row, col, last_row).getValues();
for (var i = 0; i < last_row; i++) {
var cell_value = values[i]; var reg_test = new RegExp(keywords.join("|")); // セルの値の中にキーワードが無ければ、スキップして次のセルへ if (reg_test.test(cell_value) === false) { continue; } // リッチテキストを作成して、セルのテキストを設定 var rich_text = SpreadsheetApp.newRichTextValue().setText(cell_value); keywords.forEach(function (value) { var regexp = new RegExp(value, "g"); var result; // キーワードの開始位置をグローバル検索 while (result = regexp.exec(cell_value)) { var start_pos = result.index; var end_pos = start_pos + value.length // テキストスタイルを設定 rich_text = rich_text.setTextStyle( // 開始位置、終了位置、色 start_pos, end_pos, SpreadsheetApp.newTextStyle().setForegroundColor(color).build() ); } }); // キーワードに色がついたテキストをセルに設定 sheet.getRange((i + 1), col).setRichTextValue(rich_text.build());
}
}

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/06/09 11:50