Ошибка сценариев 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 в Интернете.

Другие вопросы по тегам