Sdílet prostřednictvím


Developing Apps For Office

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

https://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:

https://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 https://msdn.microsoft.com/en-us/library/fp179924.aspx
Trusted Sites Workaround https://*.sharepoint.com, and discussion: https://social.msdn.microsoft.com/Forums/en-US/appsforsharepoint/thread/fa6abb31-7251-4744-ab14-634cde38a42d
Office App Validation Policy https://msdn.microsoft.com/en-us/library/office/apps/jj220035.aspx
JQuery https://jquery.com/
Mail App Permission Levels https://msdn.microsoft.com/en-us/library/fp161087.aspx and https://msdn.microsoft.com/en-us/library/fp161047.aspx
App Limitations https://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

  • Anonymous
    March 20, 2013
    Stupendous! Thanks for this Stephen!

  • Anonymous
    March 21, 2013
    Thanks Stephen, this is great!

  • Anonymous
    May 02, 2013
    Anybody remember that Message Header Analyzer App for Office I wrote about last month? Well, the folks

  • Anonymous
    February 10, 2014
    I can't see a way to download it.  Gives the message that I have to contact my Admin.  I am the Admin!

  • Anonymous
    February 10, 2014
    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.

  • Anonymous
    February 27, 2014
    I installed it on Ex2013SP1 on W2012R2. When opening I get "The remote server returned an error: (401) Unauthorized." Whats wrong?

  • Anonymous
    February 27, 2014
    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.

  • Anonymous
    March 02, 2014
    The comment has been removed

  • Anonymous
    March 02, 2014
    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?

  • Anonymous
    July 10, 2014
    I guess its not supposed to work in Outlook????   Only Outlook Web??  Why is it "Restricted" Please how to make it work in desktop...

  • Anonymous
    July 10, 2014
    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

  • Anonymous
    May 04, 2015
    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

  • Anonymous
    May 04, 2015
    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.

  • Anonymous
    June 23, 2016
    Would you mind to help me with the question I've posted on MSDN: https://social.msdn.microsoft.com/Forums/office/en-US/6a7417d1-8af8-453f-bce0-584b7f79b0c1/app-for-outlook-ews-request-failed-with-item-id-returned-by-itemsaveasync-on-compose-new-message?forum=appsforofficeAs far as I understand you would be the best in EWS world. Thanks.