Reputation: 301
I have created an angular app and wanted to use JS API library into it. I want to use this app inside Office 365 Outlook. However, I am getting the following error:
Uncaught TypeError: window.external.GetContext is not a function
OSF.InitializationHelper.getAppContext @ o15apptofilemappingtable.js:11
I am running the index.html on a browser and eventually I will run it from inside office 365 outlook. Below is the code:
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);
}
});
Please let me know if anyone has encountered this error. I could not find any solution to it by searching on the web.
Thanks!
Upvotes: 14
Views: 3583
Reputation: 1192
I have faced the same issue when running the code from browser. The issue got fixed by running the code in MS Outlook mail client with proper manifest XML file.
Upvotes: 2
Reputation: 1234
your app should be inside the office 365 .otherwise it doesn't recognize Office.initialize event. here is how initiation start
Office.initialize = function (reason) {
$(document).ready(function () {
app.initialize();
// app begin here
});
};
it looks like your one is angular app. therefore app need to manual bootstrap when Office.initialize fire
Upvotes: 1
Reputation: 81
I think the problem is that you are opening it in browser window, not inside Office app. I encountered the same problem with Excel add-in. The api should not work properly outside of Office applications. If you need your application to work outside of Excel - you can check if the web-page is opened inside Office application, and only in that case load office api.
Upvotes: 7
Reputation: 1
I encountered the same issue. spend an hour or two. I managed to resolve by deleting local files from directory and took the latest version from source control. Which did restore office.d.ts file and that did the trick for me
Upvotes: -1