Где позвонить в Office.initialize с помощью файлов пользовательских функций Excel JS? - PullRequest
0 голосов
/ 02 ноября 2018

Я создаю пользовательскую функцию в Excel JS, с которой я хочу использовать другие функции Office.js. Я пытаюсь инициализировать Office.js в пользовательской функции следующим образом:

async function getData(indicator, date, handler) {
await Office.onReady();
if (date !== "earliest" && date !== "latest" && !date.includes("-")) {
  const newDate = new Date((parseFloat(date) - (25567 + 2))*86400*1000); // Converts Excel date, days since 1900, to YYYY-MM-DD as per https://gist.github.com/christopherscott/2782634
  date = formatDate(newDate)
}
dd_value = new DDValue("A1", indicator, date)
console.log(dd_value)
try {
  await Excel.run(function (context) {
      var range = context.workbook.getSelectedRange();
      range.load("address");

      return context.sync()
          .then(function () {
              console.log(`The address of the selected range is "${range.address}"`);
          });
  }).catch(errorHandlerFunction);
} catch(error) {
  console.log("ERROR")
  console.log(error)
}
}

Однако я получаю следующие ошибки:

Uncaught TypeError: Cannot redefine property: context

Uncaught Error: Office.js has not fully loaded. Your app must call "Office.onReady()" as part of it's loading sequence (or set the "Office.initialize" function). If your app has this functionality, try reloading this page.

Я также пытался инициализировать Office.js на странице index.html (просто скрипт в заголовке), но это тоже не сработало.

Кто-нибудь пытался реализовать другие функции Office.js в пользовательских функциях? Как у вас работала инициализация Office.js?

Заранее спасибо

1 Ответ

0 голосов
/ 02 ноября 2018

сегодня это невозможно, но на нашем радаре.

a) Мы активно разрабатываем функцию передачи адреса вызывающей ячейки функции (в этом контексте выбранный диапазон не работает, так как пользователь мог выбрать ячейку, отличную от той, в которую введена ваша функция).

б) если вам нужны дополнительные API, хотели бы узнать ваш сценарий? Мы каким-то образом представим office.js для пользовательских функций, но здесь мы, как правило, осторожны, так как обратный вызов Excel во время вычислений может привести к непредсказуемым результатам (как сегодня существует для пользовательских функций XLL и VBA).

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...