Uncaught TypeError: window.external.GetContext не является функцией

Я создал приложение angular и хотел использовать библиотеку JS API. Я хочу использовать это приложение в Office 365 Outlook. Однако я получаю следующую ошибку:

Uncaught TypeError: window.external.GetContext is not a function
OSF.InitializationHelper.getAppContext  @   o15apptofilemappingtable.js:11

Я запускаю index.html в браузере, и в итоге я буду запускать его из внешнего Outlook 365. Ниже приведен код:

index.html

<!DOCTYPE html>
<html ng-app="app">

  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>Office 365 APIs sample</title>
    <base href="/">

    ...
    ...

    <!-- JavaScript Office API -->
    <script src="https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js" type="text/javascript"></script>

    <!-- App code. -->
    <script src="scripts/app.js"></script>
    <script src="controllers/homeController.js"></script>

  </head>
<body>
</body>
</html>

app.js:

(function () {     
      console.log("STARTING...");
      var init = function (reason) {
            $(document).ready(function () {
                console.log("ready");
            });
        };

      try {
          Office.initialize = init; 
          if(!window.external.GetContext) {
              console.log('Not in office context');
              init();
          }
      } catch(e) {
          // when in office context unable to access external
          console.log(e);
      }
    });

Пожалуйста, дайте мне знать, если кто-то столкнулся с этой ошибкой. Я не смог найти решения для этого, выполнив поиск в Интернете.

Спасибо!

Ответы

Ответ 1

Я думаю, проблема в том, что вы открываете ее в окне браузера, а не внутри приложения Office. Я столкнулся с той же проблемой с надстройкой Excel. Api не должен работать должным образом вне приложений Office. Если вам нужно, чтобы ваше приложение работало вне Excel, вы можете проверить, открыта ли веб-страница в приложении Office, и только в этом случае загружать офис api.

Ответ 2

Я столкнулся с такой же проблемой при запуске кода из браузера. Проблема была исправлена ​​путем запуска кода в почтовом клиенте MS Outlook с надлежащим манифестным XML файлом.

Ответ 3

ваше приложение должно находиться внутри офиса 365. иначе он не распознает событие Office.initialize. вот как начало запуска

Office.initialize = function (reason) {
        $(document).ready(function () {        
                app.initialize();
                // app begin here

        });
};

он выглядит как ваш angular приложение. поэтому приложению необходимо выполнить ручную загрузку, когда Office.initialize fire

Ответ 4

Я столкнулся с той же проблемой. потратьте час или два. Мне удалось решить, удалив локальные файлы из каталога и взяв последнюю версию из исходного элемента управления. Который восстановил файл office.d.ts, и это сделало трюк для меня.