![](/img/trans.png)
[英]Google Apps Script - Find Sum of Range from Dynamically Changing Tab Names
[英]Google Apps Script - Run Same Code on Dynamically Changing Tab Numbers
我希望下面的代碼在創建多少選項卡時運行 - 在第 7 頁之后(前 7 個選項卡始終保持不變)。 目前我使用一個數組,並且必須對它們進行編號,如果您確切知道創建了多少個選項卡 - 我並不總是知道這些。 所以我目前為 [7] 然后 [8] 等創建腳本。當我說有 [20] 但標簽 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);
}
使用getSheet().slice(7)
從第 8 頁開始獲取。 在這里查看切片是如何工作的。
然后您可以使用forEach()遍歷每個工作表(在工作表 7 之后)。
我還刪除了一些不必要的代碼行。 例如,您在工作表中多次使用SpreadsheetApp.getActive()
或者您定義了兩次相同的變量,如ss
或sheet
。
由於您正在迭代地與工作表交互,因此您可能需要使用SpreadsheetApp.flush()來確保所有待處理的更改都已完成。
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();
});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.