質問編集履歴
2
一部変更
test
CHANGED
File without changes
|
test
CHANGED
@@ -16,6 +16,8 @@
|
|
16
16
|
|
17
17
|
Googleスプレッドシートで、特定の列全体のセル内の特定の単語だけ着色したい
|
18
18
|
https://teratail.com/questions/173480
|
19
|
+
|
20
|
+
|
19
21
|
function ChangeKeyWordColor() {
|
20
22
|
|
21
23
|
// 列の指定 1→A列、2→B列、3→C列・・・
|
1
質問内容に追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -6,3 +6,64 @@
|
|
6
6
|
GASは初心者の為、コードを書いてくださると助かります。
|
7
7
|
|
8
8
|
よろしくお願いします。
|
9
|
+
|
10
|
+
追記
|
11
|
+
下記のコードにて、キーワードを赤のみに変更して実行
|
12
|
+
次にキーワードを青のみに変更して実行
|
13
|
+
すると、セルの中に『赤青』が入ってる場合、赤しか赤字にならない。
|
14
|
+
同一セルに対象の文字列が含まれる場合どうも上手くいかず、理由が分かりません。
|
15
|
+
|
16
|
+
|
17
|
+
Googleスプレッドシートで、特定の列全体のセル内の特定の単語だけ着色したい
|
18
|
+
https://teratail.com/questions/173480
|
19
|
+
function ChangeKeyWordColor() {
|
20
|
+
|
21
|
+
// 列の指定 1→A列、2→B列、3→C列・・・
|
22
|
+
var col = 3;
|
23
|
+
|
24
|
+
// 色の指定
|
25
|
+
var color = '#ff0000';
|
26
|
+
|
27
|
+
// キーワードの指定
|
28
|
+
var keywords = ['あいうえお', 'かきくけこ', 'さしすせそ'];
|
29
|
+
|
30
|
+
var sheet = SpreadsheetApp.getActiveSheet();
|
31
|
+
var last_row = sheet.getLastRow();
|
32
|
+
var row = 1;
|
33
|
+
var values = sheet.getRange(row, col, last_row).getValues();
|
34
|
+
|
35
|
+
for (var i = 0; i < last_row; i++) {
|
36
|
+
|
37
|
+
var cell_value = values[i];
|
38
|
+
var reg_test = new RegExp(keywords.join("|"));
|
39
|
+
|
40
|
+
// セルの値の中にキーワードが無ければ、スキップして次のセルへ
|
41
|
+
if (reg_test.test(cell_value) === false) {
|
42
|
+
continue;
|
43
|
+
}
|
44
|
+
|
45
|
+
// リッチテキストを作成して、セルのテキストを設定
|
46
|
+
var rich_text = SpreadsheetApp.newRichTextValue().setText(cell_value);
|
47
|
+
|
48
|
+
keywords.forEach(function (value) {
|
49
|
+
|
50
|
+
var regexp = new RegExp(value, "g");
|
51
|
+
var result;
|
52
|
+
|
53
|
+
// キーワードの開始位置をグローバル検索
|
54
|
+
while (result = regexp.exec(cell_value)) {
|
55
|
+
|
56
|
+
var start_pos = result.index;
|
57
|
+
var end_pos = start_pos + value.length
|
58
|
+
|
59
|
+
// テキストスタイルを設定
|
60
|
+
rich_text = rich_text.setTextStyle(
|
61
|
+
// 開始位置、終了位置、色
|
62
|
+
start_pos, end_pos, SpreadsheetApp.newTextStyle().setForegroundColor(color).build()
|
63
|
+
);
|
64
|
+
}
|
65
|
+
});
|
66
|
+
// キーワードに色がついたテキストをセルに設定
|
67
|
+
sheet.getRange((i + 1), col).setRichTextValue(rich_text.build());
|
68
|
+
}
|
69
|
+
}
|