前提・実現したいこと
GASを使用して
スプレッドシート内で指定した文字のみの色を変更する
※指定した文字があるセルの色を変更させるわけではない。
発生している問題・エラーメッセージ
【問題点】
文字を変更できる範囲が1列分のみ
下記のコードが原因
「// 列の指定 1→A列、2→B列、3→C列・・・
var col = 6;」
【理想の解決策】
変更できる範囲をシート全体にする
もしくは変更範囲の行と列を指定できるようにする
該当のソースコード
【コード名】
GAS
【ソースコード】
function ChangeKeyWordColor() {
** // 列の指定 1→A列、2→B列、3→C列・・・
var col = 6;**
// 色の指定
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());
}
}
試したこと
以下のサイトのコードを記入しました。
https://teratail.com/questions/173480
補足情報(FW/ツールのバージョンなど)
getrangeなどセルの範囲をしていするやり方を見ましたが、うまくいきませんでした。
お手すきの際で構いませんのでお答えいただけますと大変助かります。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。