Ошибка Office Scripts - свойство недоступно - PullRequest
3 голосов
/ 08 января 2020

Я создал скрипт с новыми Сценариями 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 Ответ

4 голосов
/ 08 января 2020

Вам нужно будет добавить await перед context.sync(); (чтобы оно стало await context.sync();).

context.sync() - это асинхронное действие, означающее, что скрипт продолжит работу до sync заканчивается. Поскольку для следующей строки вашего сценария требуется информация из рабочей книги, перед продолжением необходимо заполнить sync. Изменение строки на await context.sync(); гарантирует, что синхронизация между книгой и вашим сценарием будет выполнена и успешно выполнена, прежде чем продолжить.

Подробнее об этом см. В статье Основы сценариев для сценариев Office в Excel в Интернете .

...