Ошибка сценариев Office - свойство недоступно
Я создал сценарий с новыми сценариями Office в Excel в Интернете. Сценарий просто устанавливает цвет заливки для диапазона на текущем листе, получает используемый диапазон и затем пытается записать адрес диапазона в консоль.
async function main(context: Excel.RequestContext) {
let workbook = context.workbook;
let worksheets = workbook.worksheets;
let selectedSheet = worksheets.getActiveWorksheet();
selectedSheet.getRange("B3:E6").format.fill.color = "E2EFDA";
// write used range to console
let usedRange = selectedSheet.getUsedRange();
usedRange.load("address");
context.sync();
console.log("used range = " + usedRange.address);
}
Запуск этого сценария приводит к появлению следующего сообщения об ошибке:
The property 'address' is not available. Before reading the property's value, call the load method on the containing object and call "context.sync()" on the associated request context.
Похоже, я уже делаю то, что предлагает руководство по сообщениям об ошибках, т.е. load
метод загрузки address
свойство, а затем позвонить context.sync()
после нагрузки. Что мне здесь не хватает?
1 ответ
Вам нужно будет добавить await
перед context.sync();
(так становится await context.sync();
).
context.sync()
является асинхронным действием, то есть скрипт продолжит выполнение до sync
отделка. Поскольку следующая строка вашего скрипта требует информации из книги, этоsync
необходимо завершить, прежде чем продолжить. Изменение строки наawait context.sync();
обеспечивает успешную синхронизацию книги и сценария перед продолжением.
Подробнее об этом читайте в статье Основы создания сценариев для сценариев Office в Excel в Интернете.