我有一張表,我想將復選框應用于幾個范圍。我制作了一個 rangeList ,然后使用以下代碼:
//apply checkboxes to entire boolean rangeList
var activeRanges = compSheet.getRangeList(rangeListArr).activate();
activeRanges.insertCheckboxes();
但這非常慢。即使范圍中有一行,將復選框應用于每一列也需要大約一秒鐘。我使用 rangeList 是因為我認為它可能比將復選框應用于單個范圍更快,但速度似乎沒有差異。
uj5u.com熱心網友回復:
您將時間除以大約 2 沒有activate()
const compSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet5')
var activeRanges = compSheet.getRangeList(rangeListArr).insertCheckboxes();
經過一些測驗,它似乎比 batchupdate 運行得更快。
編輯
這是 3 個測驗及其以毫秒為單位的性能
function test1(){
// 703 MILLISECONDS
var d = new Date()
var rangeListArr = ['C1:C100', 'J1:J100', 'Z1:Z100'];
const compSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet5')
var activeRanges = compSheet.getRangeList(rangeListArr).activate();
activeRanges.insertCheckboxes();
Logger.log(new Date() - d)
}
function test2(){
// 348 MILLISECONDS
var d = new Date()
var rangeListArr = ['C1:C100', 'J1:J100', 'Z1:Z100'];
const compSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet5')
var activeRanges = compSheet.getRangeList(rangeListArr).insertCheckboxes();
Logger.log(new Date() - d)
}
function test3() {
// 469 MILLISECONDS
var d = new Date()
const rangeListArr = ['C1:C100', 'J1:J100', 'Z1:Z100'];
const sheetName = "Sheet5"; // Please set your sheet name.
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName(sheetName);
const sheetId = sheet.getSheetId();
const requests = sheet.getRangeList(rangeListArr).getRanges().map(r => {
const startRowIndex = r.getRow() - 1;
const startColumnIndex = r.getColumn() - 1;
const endRowIndex = startRowIndex r.getNumRows();
const endColumnIndex = startColumnIndex r.getNumColumns();
return { repeatCell: { range: { sheetId, startRowIndex, endRowIndex, startColumnIndex, endColumnIndex }, cell: { dataValidation: { condition: { type: "BOOLEAN" } } }, fields: "dataValidation" } };
});
if (requests.length > 0) {
Sheets.Spreadsheets.batchUpdate({ requests }, ss.getId());
}
Logger.log(new Date() - d)
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/435849.html
