質問編集履歴
1
無事解決したので修正後のコードを追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -54,3 +54,42 @@
|
|
54
54
|
}
|
55
55
|
```
|
56
56
|
|
57
|
+
|
58
|
+
### 修正後のコード
|
59
|
+
需要は少なさそうですが、一応今回の最終的なコードを残しておきます。
|
60
|
+
```JavaScript
|
61
|
+
const api_url = 'スプレッドシートのAPI'; //[{"jpn0":"","eng0":"","chn0":"","jpn1":"",,,},{"jpn0":"",,,},,,]の形に変更
|
62
|
+
|
63
|
+
(async function() {
|
64
|
+
nameDB = await (await fetch(api_url)).json();
|
65
|
+
for (let i = 0; i < Object.keys(nameDB).length; i++) {
|
66
|
+
let walkerText= document.createTreeWalker(
|
67
|
+
document.body,
|
68
|
+
NodeFilter.SHOW_TEXT,function(node){
|
69
|
+
if(node.data.match(/\S/g)){ //ホワイトスペースなどの不必要な検索対象を除外し高速化
|
70
|
+
return NodeFilter.FILTER_ACCEPT;
|
71
|
+
}else{
|
72
|
+
return NodeFilter.FILTER_REJECT;
|
73
|
+
}
|
74
|
+
}
|
75
|
+
);
|
76
|
+
while(true){
|
77
|
+
tgt2Repl = walkerText.nextNode();
|
78
|
+
if(tgt2Repl === null){ //nextNode() が null の時 = 全てのノードの処理が完了した時
|
79
|
+
break;
|
80
|
+
};
|
81
|
+
for(let j = 0; j < 4; j++){
|
82
|
+
engElem = eval('nameDB[i].eng' + j); //evalは脆弱性の関係で非推奨とのこと。今回は個人的な拡張機能ということで採用
|
83
|
+
if(engElem !== ''){ //元のAPIの構造上空白の辞書があるためここで弾く
|
84
|
+
chnElem = eval('nameDB[i].chn' + j);
|
85
|
+
jpnElem = eval('nameDB[i].jpn' + j);
|
86
|
+
flElem = new RegExp(engElem + '|' + chnElem, 'g');
|
87
|
+
if(tgt2Repl.data.includes(engElem) || tgt2Repl.data.includes(chnElem)){
|
88
|
+
tgt2Repl = tgt2Repl.data.replace(flElem, jpnElem);
|
89
|
+
};
|
90
|
+
};
|
91
|
+
};
|
92
|
+
};
|
93
|
+
};
|
94
|
+
})()
|
95
|
+
```
|