建议:组装一个 JavaScript 对象
我保留了大部分工作代码并添加了一个 JavaScript 对象来动态存储 JSON 对象中的所有工作表名称。请注意,这假设有一对模式“客户端 1 TLD”对应“客户端 1”。
脚本 1:一键处理一张 TLD 表
function amextdl() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
//Step1: Assemble the JavaScript Object
var listTDL = ss.getSheets().map(x => x.getName()).filter(y => y.match(/TDL/));
var listNoTDL = listTDL.map(z => z.replace(' TDL', ''))
var sheetsDictionary = listTDL.reduce((x, i, j) => {
x[i] = listNoTDL[j];
return x;
}, {});
//Step2: Access the key-value pair for the active sheet
var sh0 = ss.getActiveSheet();
var sh1 = ss.getSheetByName(sheetsDictionary[sh0.getName()]);
//Step3: Process accordingly
//from original script:
var tasks1 = sh0.getRange("A2:C11").getValues();
var tasks2 = sh0.getRange("D2:F11").getValues();
var tasks3 = sh0.getRange("G2:I11").getValues();
var tasks4 = sh0.getRange("J2:L11").getValues();
var tasks5 = sh0.getRange("M2:O11").getValues();
for (var i = 0; i < tasks1.length; i++) {
if (tasks1[i][0] === 'Y') {
var sh1Tasks1 = sh1.createTextFinder(tasks1[i][2]).findNext().getCell(1, 1).getA1Notation()
sh1.getRange(sh1Tasks1).offset(0, 1).setBackground('#d9ead3')
}
if (tasks2[i][0] === 'Y') {
var sh1Tasks2 = sh1.createTextFinder(tasks2[i][2]).findNext().getCell(1, 1).getA1Notation()
sh1.getRange(sh1Tasks2).offset(0, 2).setBackground('#d9ead3')
}
if (tasks3[i][0] === 'Y') {
var sh1Tasks3 = sh1.createTextFinder(tasks3[i][2]).findNext().getCell(1, 1).getA1Notation()
sh1.getRange(sh1Tasks3).offset(0, 3).setBackground('#d9ead3')
}
if (tasks4[i][0] === 'Y') {
var sh1Tasks4 = sh1.createTextFinder(tasks4[i][2]).findNext().getCell(1, 1).getA1Notation()
sh1.getRange(sh1Tasks4).offset(0, 4).setBackground('#d9ead3')
}
if (tasks5[i][0] === 'Y') {
var sh1Tasks5 = sh1.createTextFinder(tasks5[i][2]).findNext().getCell(1, 1).getA1Notation()
sh1.getRange(sh1Tasks5).offset(0, 5).setBackground('#d9ead3')
}
}
}
脚本2:一键处理所有纸张
function amextdl() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
//Step 1: Group the sheet names into 2 different arrays
var listTDL = ss.getSheets().map(x => x.getName()).filter(y => y.match(/TDL/));
var listNoTDL = listTDL.map(z => z.replace(' TDL', ''));
//Step 2: Assemble the JavaScript Object using the 2 arrays
var sheetsDictionary = listTDL.reduce((x, i, j) => {
x[i] = listNoTDL[j];
return x;
}, {});
//Step3: Process accordingly by using map() on listTDL array
listTDL.map(x => {
var sh1 = ss.getSheetByName(sheetsDictionary[x]);
//from original script:
var tasks1 = ss.getSheetByName(x).getRange("A2:C11").getValues();
var tasks2 = ss.getSheetByName(x).getRange("D2:F11").getValues();
var tasks3 = ss.getSheetByName(x).getRange("G2:I11").getValues();
var tasks4 = ss.getSheetByName(x).getRange("J2:L11").getValues();
var tasks5 = ss.getSheetByName(x).getRange("M2:O11").getValues();
for (var i = 0; i < tasks1.length; i++) {
if (tasks1[i][0] === 'Y') {
var sh1Tasks1 = sh1.createTextFinder(tasks1[i][2]).findNext().getCell(1, 1).getA1Notation()
sh1.getRange(sh1Tasks1).offset(0, 1).setBackground('#d9ead3')
}
if (tasks2[i][0] === 'Y') {
var sh1Tasks2 = sh1.createTextFinder(tasks2[i][2]).findNext().getCell(1, 1).getA1Notation()
sh1.getRange(sh1Tasks2).offset(0, 2).setBackground('#d9ead3')
}
if (tasks3[i][0] === 'Y') {
var sh1Tasks3 = sh1.createTextFinder(tasks3[i][2]).findNext().getCell(1, 1).getA1Notation()
sh1.getRange(sh1Tasks3).offset(0, 3).setBackground('#d9ead3')
}
if (tasks4[i][0] === 'Y') {
var sh1Tasks4 = sh1.createTextFinder(tasks4[i][2]).findNext().getCell(1, 1).getA1Notation()
sh1.getRange(sh1Tasks4).offset(0, 4).setBackground('#d9ead3')
}
if (tasks5[i][0] === 'Y') {
var sh1Tasks5 = sh1.createTextFinder(tasks5[i][2]).findNext().getCell(1, 1).getA1Notation()
sh1.getRange(sh1Tasks5).offset(0, 5).setBackground('#d9ead3')
}
}
});
}
参考:
- JavaScript 对象 https://www.w3schools.com/js/js_objects.asp
- map() https://www.w3schools.com/jsref/jsref_map.asp
- filter() https://www.w3schools.com/jsref/jsref_filter.asp
- reduce() https://www.w3schools.com/jsref/jsref_reduce.asp
- match() https://www.w3schools.com/jsref/jsref_match.asp