Office Add-Ins
Special thanks to our sponsors
About mePeter Plessers - [email protected]
SharePoint Architect at Spikeshttp://www.spikes.be
Co-founder of Tasks in a Boxhttp://tasksinabox.com
Agenda What are my options? Office Add-Ins
Task Add-Ins Content Add-Ins Command Add-Ins Mail Add-Ins
Office UI Fabric Lessons learned the hard way
Visual Basic for Applications
Visual Studio Tools for Office
Office Add-Ins
Visual Basic For Applications (VBA)
• Visual Basic 6
• Introduced in Office 2000
• Application level & Document level solutions
• Includes macro recorder
• Easy Distribution (Document level solutions)
• Desktop (Windows & Mac)
Visual Studio Tools for Office (VSTO)
• .NET
• Introduced in Office 2007
• Requires installation on clients
• Same security privileges as other desktop applications
• Windows Desktop
Office Add-Ins
• Web Technologies
• Introduced in Office 2013
• Distribution using the Office Store or corporate
app catalog
• Runs inside a sandbox
• Cross-Device
Office Add-Ins VSTO VBAAutomations & Interaction with host computer
a a
User Interface Customizations Partial a PartialInteraction with Office APIs Partial a aOffline Availability (HTML 5
capabilities)a a
Support for team development + source control
a a
Run code at application-level a aSandboxed environment aCompatibility Office 2013+
(Windows & Mac*) Office Online
Mobile
Office 2007+(Windows)
Office 2000+(Windows &
Mac*)
Applications OutlookWordExcel
PowerPointProject
Office MixAccess Web
Apps
OutlookWordExcel
PowerPointProjectVisio
InfoPath
OutlookWordExcel
PowerPointAccess
Office add-ins
Types of Office Add-ins
Content Add-in
Task Pane
Add-in
Mail Add-in
Add-in Command
s*
Where available?
Manifest + webpage = an app for Office
Task Add-ins
Task Pane App User Experience Familiar User Experience
Leverages familiar Office UI paradigm Reference Information
Ideal for providing reference information associated with document.
Demo Time
Content Add-ins
Everything you need to easily create and share interactive online videos
Demo Time
Command Add-ins
Mail Add-ins
Appear in messages and appointments
Read & Compose Mode
Contextual to current item
Distributed by Exchange
Contextual Activation RulesItem ClassesChecks if an item is a specific type (message, appointment or custom item class)
Item Has Regular Expression MatchChecks for matches to the reg ex against body, subject or sender’s email address
Item Has AttachmentChecks whether the item has an attachment
Extracted EntitiesChecks if the email contains one or more extracted entities
Extracted EntitiesExchange detects specific entitiesExchange 2013 inspects each incoming message for text, such as postal addresses, URLs, etc. These entities are stamped on each item as a property.Entity Type Text DetectedAddress US postal addresses
1 Microsoft Way, Redmond WA, 98052EmailAddress Any SMTP address
MeetingSuggestion A reference to an event or meetingLet’s meet next Tuesday for lunch.
Contact A personal name related to other entitiesRandy Byrne, 1 Microsoft Way, Redmond WA, 98052
PhoneNumber US telephone numbers(555) 867-5309
TaskSuggestion Actionable sentences in an emailPlease install office 2013 on my computer.
Url A filename or web address
Demo Time
Get subject of selected mailOffice.context.mailbox.item.subject
Get attachments of selected mailOffice.context.mailbox.item.attachments
Accessing Mail Properties
In Add-In:1. Get a callback token from Exchange server2. Call custom web service passing callback token +
email idIn custom web service:3. Authenticate to Exchange server with callback token4. Call EWS to get attachments for email5. Return result
Get Attachments
Office UI Fabric
• Get the same look & feel of native Office applications
• Collection of CSS, HTML and JavaScript• Features• Typography• Color Schemes• Icons• Animations• Responsive Grid
Office UI Fabric
Components
Lessons learned
• Test in multiple browsers / desktop applications
• Security zones in IE • Differences in capabilities• E.g., Outlook for Mac does not support APIs for compose mode
• EWS Callback Token Bug !!!
Lessons Learned
Demo Time
Thank you!