Developing Apps For Office


So – I’ve been playing a lot with Apps for Office lately. I even wrote and published an app:

http://office.microsoft.com/en-us/store/message-header-analyzer-WA104005406.aspx

My management encouraged me to put together a presentation on everything I learned while developing this app. I did, and they asked me to record a video of me delivering this presentation. So – now you all get to hear me drone on about App development. Here’s the entry on the Partner Technical Services blog containing my presentation:

http://blogs.technet.com/b/ptsblog/archive/2013/03/20/microsoft-office-lessons-learned-developing-apps-for-the-office-store.aspx

And here’s the direct YouTube link:

Microsoft Office – Lessons Learned Developing Apps for the Office Store

and the direct link to the slide deck:

https://skydrive.live.com/view.aspx/Documents/AppsForOffice.pptx?cid=8d22925062e717b6&id=documents&authkey=!AOsqoQIn-Xb4nBk&&wdSlideId=274

In case you don’t want to dig through the slide deck for the links I reference, here they all are:

Topic Link
Getting Started http://msdn.microsoft.com/en-us/library/fp179924.aspx
Trusted Sites Workaround https://*.sharepoint.com, and discussion: http://social.msdn.microsoft.com/Forums/en-US/appsforsharepoint/thread/fa6abb31-7251-4744-ab14-634cde38a42d
Office App Validation Policy http://msdn.microsoft.com/en-us/library/office/apps/jj220035.aspx
JQuery http://jquery.com/
Mail App Permission Levels http://msdn.microsoft.com/en-us/library/fp161087.aspx and http://msdn.microsoft.com/en-us/library/fp161047.aspx
App Limitations http://msdn.microsoft.com/en-us/library/fp142267.aspx

Finally, my JQuery EWS parsing trick:

(function ($) {
     $.fn.filterNode = function (name) {
         return this.find('*').filter(function () {
             return this.nodeName === name;
         });
     };
 })(jQuery);

function callback(asyncResult) {
         var response = $.parseXML(asyncResult.value);
         var responseDOM = $(response);
         var Prop = responseDOM.filterNode("t:InternetMessageHeaders")[0];

Enjoy!

Comments (13)

  1. Eric Legault says:

    Stupendous! Thanks for this Stephen!

  2. Sanja says:

    Thanks Stephen, this is great!

  3. Anybody remember that Message Header Analyzer App for Office I wrote about last month? Well, the folks

  4. JustMe says:

    I can't see a way to download it.  Gives the message that I have to contact my Admin.  I am the Admin!

  5. Stephen Griffin says:

    You're probably trying to download it as a user then. Go to the ECP and manage apps from there. You'll be able to install it for the org.

  6. Andreas says:

    I installed it on Ex2013SP1 on W2012R2.

    When opening I get "The remote server returned an error: (401) Unauthorized."

    Whats wrong?

  7. Stephen Griffin says:

    What did you install? Also – you can use IE's debugger tools to see exactly what URL is giving you the error. That'll help figure out what's going wrong.

  8. Andreas says:

    I installed the App "Message Header Analyzer".

    When I click in OWA on MessaheHeaderAnalyser the box shows: "The remote server returned an error: (401) Unauthorized."

    Thx

  9. Stephen Griffin says:

    That's the first report I've gotten of a 401. Could you use Fiddler or the F12 developer tools to find out what URL is giving you the 401?

  10. Drool...Drool.... says:

    I guess its not supposed to work in Outlook????   Only Outlook Web??  Why is it "Restricted"

    Please how to make it work in desktop…

  11. Ha Ha - the magic button says:

    Log into O365 Exchange admin

    Organization – Apps

    MessageHeaderAnalizer

    Click on the secret link bottom right – View more details about this app.

    This is the only link that works

    office.microsoft.com/…/message-header-analyzer-WA104005406.aspx

  12. EinmalIM says:

    Hi Steve,

    MHA does not work on items in public folders.

    In OWA I added a public folder to the favorites list, selected that folder, selected a message in that folder and clicked MHA. Orginal headers contains this: …<m:GetItemResponseMessage ResponseClass="Error"><m:MessageText>Mit der Nebenstellennummer sollte nur auf das Act-As-Benutzerpostfach zugegriffen werden.</m:MessageText><m:ResponseCode>ErrorAccessDenied</m:ResponseCode><m:DescriptiveLinkKey>0</m:DescriptiveLinkKey><m:Items/></m:GetItemResponseMessage>…

    I hit the same error in a mail app I wrote and guess what: a customer of ours is only accessing relevant messages in a public folder. After migration from Exchange 2010 to 2013 a few weeks ago his OWA users are lost and quite unhappy with us 🙁

    Do you have any information if and how mailbox.makeEwsRequestAsync can access items in a public folder – the user has at least read permissions in that folder.

    Thanks

    Sven

  13. The problem is the permissions we have for making EWS calls from the context of the app only allow us to access the user's own mailbox. As the PF is a different mailbox, we can't make the EWS call. I've let Exchange know about this.