我希望下面的代码运行在创建许多选项卡的过程中--在第7页之后(前7个选项卡始终保持不变)。目前,我使用数组,必须对它们进行编号,如果您确切知道创建了多少选项卡,则必须对它们进行编号--我并不总是知道。所以我现在为7,然后8等等创建脚本,当我说有20,但Tab 20不存在时,这确实会返回一个错误。
function Company_ONE() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[7]; //SHEET 8
var ss = SpreadsheetApp.getActive();
var sheet = ss.getSheets()[7];
var lr = sheet.getLastRow();
var cell = SpreadsheetApp.getActive().getRange('AK3');
var criteria = SpreadsheetApp.DataValidationCriteria.CHECKBOX;
var rule = SpreadsheetApp.newDataValidation()
.requireCheckbox()
.build();
cell.setDataValidation(rule);
sheet.getRange('AK3').activate();
var destinationRange = sheet.getActiveRange().offset(0, 0, lr-3);
sheet.getRange('AK3').copyTo(destinationRange);
}发布于 2020-11-17 17:52:27
解释:
getSheet().slice(7)从第8页开始。参见这里切片是如何工作的。SpreadsheetApp.getActive(),或者定义相同的变量两次,如ss或sheet。解决方案:
function Company_ONE() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheets = ss.getSheets().slice(7); // get 8th sheet onwards
sheets.forEach(sheet=>{
var lr = sheet.getLastRow();
var cell = ss.getRange('AK3');
var criteria = SpreadsheetApp.DataValidationCriteria.CHECKBOX;
var rule = SpreadsheetApp.newDataValidation()
.requireCheckbox()
.build();
cell.setDataValidation(rule);
sheet.getRange('AK3').activate();
var destinationRange = sheet.getActiveRange().offset(0, 0, lr-3);
sheet.getRange('AK3').copyTo(destinationRange);
SpreadsheetApp.flush();
});
}https://stackoverflow.com/questions/64880515
复制相似问题