В ближайшее время появится бета-версия, которая позволит использовать разные зоны.Его синтаксис все еще TBD, это может быть именно то, что вы написали (с диапазоном, который может быть многообластным диапазоном), или, возможно, мы оставим Range одним смежным объектом и будем иметь параллельные методы, такие как worksheet.getMultiAreaRange("C8:G8, C12:H12, C19:I19
), чтобы делать то, чтовам бы хотелось.
Кроме того, какая версия Office у вас есть и вы случайно не работаете в Insider Fast?
Re.производительность, вы можете опубликовать свой точный вариант использования в качестве минимального фрагмента?Вы можете выполнить некоторые оптимизации, даже за исключением нескольких областей.
Обновление
Если все, что вы делаете, это 3x3 или 5x5 (т.е.не что-то супер-огромное), вам не нужна поддержка нескольких областей.Вы можете просто сделать:
await Excel.run(async (context) => {
const sheet = context.workbook.worksheets.getActiveWorksheet();
const rowCount = 5;
const columnCount = 5;
const range = sheet.getRangeByIndexes(0, 0, rowCount, columnCount);
for (let row = 0; row < rowCount; row = row + 2) {
range.getRow(row).format.fill.color = "purple";
}
await context.sync()
});