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!
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.
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.
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With