我正在使用一个查找/替换单词onEdit
的脚本。但是,它不适用于大写的单词(我的查找查询为小写)。如何获取完全匹配的大写和小写单词?
示例: 找到:“太阳”和“太阳” 替换:“阳光”(仅小写)
我也不希望它替换部分单词 例: 找到:“ sun”和“ Sun”确切的字符串-而不是“ sunny”,“ sung”或“ sundry”
感谢您可以提供的任何帮助!
我的脚本:
function onEdit(){
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("pss");
var lr = ss.getLastRow();
var range = ss.getRange("A2:J" + lr);
var vlst = range.getValues();
range.setValues(vlst);
var i,j,a,find,repl;
for (var i = 0; i < vlst.length; i++){
for (var j = 0; j < vlst[i].length; j++){
a = vlst[i][j];
if (a == find) vlst[i][j] = repl;
find ="sun";
repl ="sunshine";
}
}
答案 0 :(得分:1)
if
语句之前声明和初始化(尽管由于提升/作用域,它可以用于后续循环)。}
function onEdit() {
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("pss");
var lr = ss.getLastRow();
var range = ss.getRange("A2:J" + lr);
var vlst = range.getValues();
var findReplace = { //FindReplace object storing key/value pairs in lowercase
'sun': 'sunshine',
'moon': 'moonlight',
'evil': 'evil MasterMind'
};
var i, j, a;
for (i = 0; i < vlst.length; i++) {
for (j = 0; j < vlst[i].length; j++) {
a = vlst[i][j].toString().toLowerCase();
if (findReplace[a]) vlst[i][j] = findReplace[a];
}
}
range.setValues(vlst); //Moved below
}//Added
function onEdit(e) {
var findReplace = {
'sun': 'sunshine',
'moon': 'moonlight',
'evil': 'evil MasterMind'
},
a = findReplace[e.value.toString().toLowerCase()];
if (a) e.range.setValue(a);
}