SlideShare uma empresa Scribd logo
1 de 42
Baixar para ler offline
RE-USE YOUR SHAREPOINT FRAMEWORK SKILLZ TO
BUILD OFFICE ADD-INS
Bill Ayers M[CM|VP|CT]
Flow Simulation Ltd, UK
♡ DIAMOND AND PLATINUM SPONSORS ♡
Agenda
‱ Why Office Add-ins?
‱ How Office Add-ins Work
‱ Tools for Building Office Add-ins
‱ Using the Web Development Toolchain
‱ SPFx
‱ Distributing Add-ins
‱ Conclusions
‱ Q & A
AGENDA:
WHY OFFICE ADD-INS?
HOW OFFICE ADD-INS WORK
TOOLS FOR BUILDING OFFICE ADD-INS
USING THE WEB DEVELOPMENT TOOLCHAIN
SPFX
DISTRIBUTING ADD-INS
CONCLUSIONS
Q & A
‱ The de-facto standard for business
‱ > 1.2 b users + 400m outlook.com
‱ Now available on iOS, Android, OS X, Windows Phone and in browsers
Office is Everywhere!
Add-in vision
‱ Native and intuitive feel
‱ Use UI framework of host
client (Office UI Fabric)
‱ Write once, run everywhere
‱ Simple point solutions to
automate existing manual
processes
Reactor
Extensions for Office
VSTOCOM
Office Add-ins
VBAMacros
*all still supported
Behind the Scenes
Hosted Add-In Web Page
(must be HTTPS)
XML Manifest file in
Exchange, catalog or
file store
DEMO
Could do with something interesting here

Office Add-in Shapes
Add-in that runs within a document content with
read/write access: Excel, PowerPoint, Access
Add-in launched contextually from a mail message or appointment:
Outlook and Outlook Web Access (OWA), and could include actionable
messages
Command in the Office UI to launch add-in or execute
JavaScript: Outlook, Excel, PowerPoint, Word, OneNote
Add-in that runs beside a document/mail with read/write access:
Word, Excel, PowerPoint, Project, Outlook
Module extension for the Outlook navigation bar: Outlook
Excel Custom FunctionsF
Win32 Online iPad iPhone Mac Android UWA
Read Read
Compose Compose
Add-in Roadmap
https://dev.office.com/add-in-availability
Office.js
‱ Access to body and attachments, content
‱ Launch native forms (e.g. reply, new message, appointment)
‱ Modify fields and add attachments
‱ Set/get custom properties on items
‱ Persist user settings
JavaScript API Reference: http://dev.office.com/docs/add-ins/overview/office-add-ins
JavaScript API for Office
Building an Office Add-in
‱ Script Lab add-in
‱ Microsoft Visual Studio
‱ Any Web Editor of you choice (e.g. VS Code)
plus Yeoman project generator
https://dev.office.com/blogs/creating-office-
add-ins-with-any-editor-introducing-yo-office
Getting Started at dev.office.com – can use MSDN subscription, sign up for Office
Developer Program for free 1 year licence, or get a free 30-day Office 365 trial
DEMO
Using Visual Studio 2017
‱ Visual Studio 2017 (including community edition) – check the installer option
‱ Create new project: Add-in for Office App for Office Web Add-in
‱ Design user interface as a web site, edit manifest, etc

More Development Choices

‱ Use any technology that delivers for the web
‱ Yeoman generator for skeleton add-in project
(similar to SharePoint Framework toolchain)
Hosted on
GitHub
yo office!
‱ Go to https://nodejs.org/ and install LTS version
‱ npm install -g yo
‱ npm install -g generator-office
‱ yo office
DEMO
Reference: https://code.visualstudio.com/Docs/runtimes/office
React
‱ Open-source framework backed by Facebook
‱ Component model
‱ Virtual DOM
‱ “Weird” JSX/TSX syntax
‱ Go to https://reactjs.org/
App component with title property
Component has properties
Component’s render function returns one
root element with child elements (can wrap in
div or empty element <>)
Elements are converted into valid JavaScript
by the JSX compiler
Events are bound with function.bind syntax or
lambda expressions: e=>add(e)
Component props are immutable, but
component state can change using setState
method
ReactDOM.render method used to bind initial
App element to the element in the DOM with
the ID “app”.
React App class App extends React.Component {
constructor(props) {
super(props);
this.state = { items: [] }
}
render() {
const stocks = this.state.items.map((item, index) => (
<li>{item}</li>
));
return (
<div>
<h1>{this.props.title}</h1>
<div>
<input type="text" ref="newItem“ onKeyPress={this.add.bind(this)}/>
</div>
<ul>{stocks}</ul>
</div>
);
}
add(event) {
if (event.key == "Enter") {
var list = this.state.items;
list.unshift(this.refs.newItem.value);
this.setState({items: list});
this.refs.newItem.value = "";
}
}
}
ReactDOM.render(<App title="Hello World!" />, document.getElementById("app"));
Office.initialize and React
// Bootstrap root component in Office.initialize
Office.initialize = () => {
ReactDOM.render(
<App title={title} />,
document.querySelector('#container')
);
};
Office UI Fabric React Components
React component library with more than 40
reusable components
Add the office-ui-fabric-react npm package
Typing available for TypeScript
Office UI Fabric Core
Includes styles, icons, typography, brand
icons, colors, grids, and more as CSS and
JavaScript if not using React.
PnP SPFx React Components:
http://github.com/SharePoint/sp-dev-fx-controls-react/
Office Add-ins Design Toolkit
‱ Adobe XD Document
‱ Download Adobe XD (free)
‱ Download toolkit from
https://aka.ms/addins_toolkit
DEMO
Reference: https://dev.office.com/
Design Guidelines
‱ Design explicitly for Office
‱ Focus on key tasks
‱ Favour content over chrome
‱ Go easy on the branding
‱ Keep users in control
‱ Design for all Office platforms and input methods
‱ First Run experience
‱ See: https://docs.microsoft.com/en-us/office/dev/add-ins/design/add-in-design
Simplified component structure – no this, no
classes, no constructor, no
componentDidMount, etc.
Pure functional components
Use functions instead of classes
Functional (Stateless) Components were
introduced with React 1.4
React Hooks new in React 16.8
Current generator-office uses React 16.8
Current SPFx generator (1.8) uses React 16.7
One more thing -
React Hooks
function App(props) {
const [items, setItems] = React.useState([]);
const stocks = items.map((item, index) => (
<li>{item}</li>
));
function add(event) {
if (event.key == "Enter") {
var list = items;
list.unshift(event.target.value);
setItems({items: list});
}
}
return (
<div>
<h1>{props.title}</h1>
<div>
<input type="text“ onKeyPress={event=>add(event)} />
</div>
<ul>{stocks}</ul>
</div>
);
}
}
ReactDOM.render(<App title="Hello World!" />, document.getElementById("app"));
Refactored function Stocks({items}) {
return (
<ul>
{items.map(item => <li>{item}</li>)}
</ul>
);
}
function App(props) {
const [items, setItems] = useState([]);
function add(event) {
if (event.key == "Enter") {
var list = items;
list.unshift(event.target.value);
setItems({items: list});
}
}
return (
<div>
<h1>{props.title}</h1>
<div>
<input type="text“ onKeyPress={event=>add(event)} />
</div>
<Stocks items={items} />
</div>
);
}
}
ReactDOM.render(<App title="Hello World!" />, document.getElementById("app"));
Stocks is extracted as a separate component.
Stocks only depends on its props so it is a pure
or “stateless” functional component; no state, no
side-effects.
This makes Stocks very easy to test.
Implicit object destructuring operator {} used
instead of props.items.
DEMO
TASKS
manager
memberOf
FILES
MESSAGES
workingWith
Shared with me
directReports
createdBy
FILES
CONVERSATIONS
createdBy
workingWith
EVENTS
trendingAround
GROUPS
TASKS
NOTES
NOTES
public
modifiedBy
USER
trendingAround
Microsoft Graph API
Dialog API
‱ Dialog API allows you to open
a dialog box from an Office
Add-in.
‱ Typically used for
authentication prompts with
external systems.
‱ Can also be used to show UI
elements that are too big for
the task pane.
Dialog API
Office.context.ui.displayDialogAsync(“https://myaddin.contoso.com/login.html",
options, callbackFunction);
open to a page hosted from a valid
app domain (defined in manifest) and
then can display any page that is
hosted using HTTPS
e.g. height and
width
optional – enables host
page to get messages
from dialog
What if we could just use SPFx?
Introduced at //build/ 2019
Still in early stages
SPFx component in task pane includes a call to Office.js
Get access to SharePoint data (if authenticated)
Get access to Microsoft Graph through MSGraphClient
No need to worry about where to host the Add-in
Currently planned for preview in 1.9 release of SPFx
DEMO
Deployment Options
‱ Debugging – launch from Visual Studio or Visual Studio Code
‱ Side-loading – ad-hoc pull-driven deployment
‱ App Catalog – for internal distribution
‱ App Store – for broader distribution
‱ App Store – commercial distribution
‱ Centralized Deployment
Conclusions:
‱ Office Add-ins – potential for huge business benefit for
your users with minimal effort
‱ > 1.5bn potential users across multiple platforms
‱ Use same skillset, possibly even code, across Office
Add-ins, SharePoint, Web, Universal Apps and Mobile
Cross-platform Apps
‱ Your choice of developer tooling – use what you know
‱ Platform continuing to get more capabilities and better
reach
‱ Watch out for SPFx Office Add-in component in SPFx
version 1.9
Sign up for the Office 365
Developer Program
Start at http://dev.office.com
Build your first Office Add-
in
Use Yeoman, Visual Studio Code,
ReactJS and other familiar tools from
SPFx development right now
Think about how Office
Add-ins could help your
business
Solve real business problems,
delight users, watch out for SPFx 1.9
CALL TO ACTION
thank you
questions?
SPDOCTOR.COM@SPDOCTOR
Bill Ayers
Technical Director
Flow Simulation Ltd.
Office 365 Dev Center dev.office.com (redirect)
Office Add-ins
Documentation
https://docs.microsoft.com/e
n-us/office/dev/add-ins/
Training content on GitHub https://github.com/OfficeDev/
TrainingContent/
Office UI Fabric https://developer.microsoft.c
om/en-us/fabric
Script Lab https://github.com/OfficeDev/
script-lab
Discover what’s coming with
the Microsoft 365 Roadmap
aka.ms/M365Roadmap
Follow me and share this
session
@SPDoctor #Collabsummit
ecs19 - Bill Ayers - RE-USE YOUR SHAREPOINT FRAMEWORK SKILLZ TO BUILD OFFICE ADD-INS

Mais conteĂșdo relacionado

Mais procurados

O365Con18 - Customizing SharePoint and Microsoft Teams with SharePoint Framew...
O365Con18 - Customizing SharePoint and Microsoft Teams with SharePoint Framew...O365Con18 - Customizing SharePoint and Microsoft Teams with SharePoint Framew...
O365Con18 - Customizing SharePoint and Microsoft Teams with SharePoint Framew...
NCCOMMS
 

Mais procurados (20)

ECS19 - Bill Ayers - UNLOCK YOUR BUSINESS KNOWLEDGE WITH THE MICROSOFT GRAPH,...
ECS19 - Bill Ayers - UNLOCK YOUR BUSINESS KNOWLEDGE WITH THE MICROSOFT GRAPH,...ECS19 - Bill Ayers - UNLOCK YOUR BUSINESS KNOWLEDGE WITH THE MICROSOFT GRAPH,...
ECS19 - Bill Ayers - UNLOCK YOUR BUSINESS KNOWLEDGE WITH THE MICROSOFT GRAPH,...
 
[Jansen] Transforming your classic team sites into modern group connected tea...
[Jansen] Transforming your classic team sites into modern group connected tea...[Jansen] Transforming your classic team sites into modern group connected tea...
[Jansen] Transforming your classic team sites into modern group connected tea...
 
ECS19 - Katja Jokisalo - Modernize your Intranet
ECS19 - Katja Jokisalo - Modernize your IntranetECS19 - Katja Jokisalo - Modernize your Intranet
ECS19 - Katja Jokisalo - Modernize your Intranet
 
Cloud-Based App Development using SharePoint 2013, Office 365 and Azure
Cloud-Based App Development using SharePoint 2013, Office 365 and AzureCloud-Based App Development using SharePoint 2013, Office 365 and Azure
Cloud-Based App Development using SharePoint 2013, Office 365 and Azure
 
[Collinge] Office 365 Enterprise Network Connectivity Using Published Office ...
[Collinge] Office 365 Enterprise Network Connectivity Using Published Office ...[Collinge] Office 365 Enterprise Network Connectivity Using Published Office ...
[Collinge] Office 365 Enterprise Network Connectivity Using Published Office ...
 
Building a Microsoft Teams Provisioning Process using Power Apps & Power Auto...
Building a Microsoft Teams Provisioning Process using Power Apps & Power Auto...Building a Microsoft Teams Provisioning Process using Power Apps & Power Auto...
Building a Microsoft Teams Provisioning Process using Power Apps & Power Auto...
 
ECS19 Bert Jansen - Modernizing your existing sites
ECS19 Bert Jansen - Modernizing your existing sitesECS19 Bert Jansen - Modernizing your existing sites
ECS19 Bert Jansen - Modernizing your existing sites
 
Chris O'Brien - Introduction to the SharePoint Framework for developers
Chris O'Brien - Introduction to the SharePoint Framework for developersChris O'Brien - Introduction to the SharePoint Framework for developers
Chris O'Brien - Introduction to the SharePoint Framework for developers
 
ECS19 - Damir Dobric - Designing and Operating modern applications with Micro...
ECS19 - Damir Dobric - Designing and Operating modern applications with Micro...ECS19 - Damir Dobric - Designing and Operating modern applications with Micro...
ECS19 - Damir Dobric - Designing and Operating modern applications with Micro...
 
ECS19 - Dragan Panjkov - Connecting Enterprise Software With Flow
ECS19 - Dragan Panjkov - Connecting Enterprise Software With FlowECS19 - Dragan Panjkov - Connecting Enterprise Software With Flow
ECS19 - Dragan Panjkov - Connecting Enterprise Software With Flow
 
What's in SharePoint land 2016 for the end user
What's in SharePoint land 2016 for the end userWhat's in SharePoint land 2016 for the end user
What's in SharePoint land 2016 for the end user
 
Building high performance and scalable share point applications
Building high performance and scalable share point applicationsBuilding high performance and scalable share point applications
Building high performance and scalable share point applications
 
An Introduction to the Office 365 Patterns and Practices Project
An Introduction to the Office 365 Patterns and Practices ProjectAn Introduction to the Office 365 Patterns and Practices Project
An Introduction to the Office 365 Patterns and Practices Project
 
SPUnite17 SPFx Extensions
SPUnite17 SPFx ExtensionsSPUnite17 SPFx Extensions
SPUnite17 SPFx Extensions
 
O365Con18 - Customizing SharePoint and Microsoft Teams with SharePoint Framew...
O365Con18 - Customizing SharePoint and Microsoft Teams with SharePoint Framew...O365Con18 - Customizing SharePoint and Microsoft Teams with SharePoint Framew...
O365Con18 - Customizing SharePoint and Microsoft Teams with SharePoint Framew...
 
Collab 365 - Real world scenarios to migrate to SharePoint 2016 or Office 365
Collab 365 - Real world scenarios to migrate to SharePoint 2016 or Office 365Collab 365 - Real world scenarios to migrate to SharePoint 2016 or Office 365
Collab 365 - Real world scenarios to migrate to SharePoint 2016 or Office 365
 
Modern SharePoint, the Good, the Bad, and the Ugly
Modern SharePoint, the Good, the Bad, and the UglyModern SharePoint, the Good, the Bad, and the Ugly
Modern SharePoint, the Good, the Bad, and the Ugly
 
Improve and Understand Your SharePoint Online Performance - Serge Luca Patric...
Improve and Understand Your SharePoint Online Performance - Serge Luca Patric...Improve and Understand Your SharePoint Online Performance - Serge Luca Patric...
Improve and Understand Your SharePoint Online Performance - Serge Luca Patric...
 
Top 7 mistakes
Top 7 mistakesTop 7 mistakes
Top 7 mistakes
 
Introduction to Office 365 PnP- Reusable solutions
Introduction to Office 365 PnP- Reusable solutionsIntroduction to Office 365 PnP- Reusable solutions
Introduction to Office 365 PnP- Reusable solutions
 

Semelhante a ecs19 - Bill Ayers - RE-USE YOUR SHAREPOINT FRAMEWORK SKILLZ TO BUILD OFFICE ADD-INS

Yo Office! Use your SPFx Skills to Build Add-Ins for Word, Excel, Outlook and...
Yo Office! Use your SPFx Skills to Build Add-Ins for Word, Excel, Outlook and...Yo Office! Use your SPFx Skills to Build Add-Ins for Word, Excel, Outlook and...
Yo Office! Use your SPFx Skills to Build Add-Ins for Word, Excel, Outlook and...
BIWUG
 
SPUnite17 Become a Developer Hero by Building Office Add ins
SPUnite17 Become a Developer Hero by Building Office Add insSPUnite17 Become a Developer Hero by Building Office Add ins
SPUnite17 Become a Developer Hero by Building Office Add ins
NCCOMMS
 

Semelhante a ecs19 - Bill Ayers - RE-USE YOUR SHAREPOINT FRAMEWORK SKILLZ TO BUILD OFFICE ADD-INS (20)

Yo Office! Use your SPFx Skills to Build Add-Ins for Word, Excel, Outlook and...
Yo Office! Use your SPFx Skills to Build Add-Ins for Word, Excel, Outlook and...Yo Office! Use your SPFx Skills to Build Add-Ins for Word, Excel, Outlook and...
Yo Office! Use your SPFx Skills to Build Add-Ins for Word, Excel, Outlook and...
 
SPUnite17 Become a Developer Hero by Building Office Add ins
SPUnite17 Become a Developer Hero by Building Office Add insSPUnite17 Become a Developer Hero by Building Office Add ins
SPUnite17 Become a Developer Hero by Building Office Add ins
 
Office Add-ins developer community call-January 2020
Office Add-ins developer community call-January 2020Office Add-ins developer community call-January 2020
Office Add-ins developer community call-January 2020
 
Convert your Full Trust Solutions to the SharePoint Framework (SPFx)
Convert your Full Trust Solutions to the SharePoint Framework (SPFx)Convert your Full Trust Solutions to the SharePoint Framework (SPFx)
Convert your Full Trust Solutions to the SharePoint Framework (SPFx)
 
SPTechCon Austin 2019 - From SharePoint to Office 365 development
SPTechCon Austin 2019 - From SharePoint to Office 365 developmentSPTechCon Austin 2019 - From SharePoint to Office 365 development
SPTechCon Austin 2019 - From SharePoint to Office 365 development
 
Real World SharePoint Framework and Azure Services
Real World SharePoint Framework and Azure ServicesReal World SharePoint Framework and Azure Services
Real World SharePoint Framework and Azure Services
 
SharePoint Saturday Ottawa - From SharePoint to Office 365 Development
SharePoint Saturday Ottawa - From SharePoint to Office 365 DevelopmentSharePoint Saturday Ottawa - From SharePoint to Office 365 Development
SharePoint Saturday Ottawa - From SharePoint to Office 365 Development
 
Office Add-in development
Office Add-in developmentOffice Add-in development
Office Add-in development
 
SharePoint Fest Chicago - From SharePoint to Office 365 Development
SharePoint Fest Chicago - From SharePoint to Office 365 DevelopmentSharePoint Fest Chicago - From SharePoint to Office 365 Development
SharePoint Fest Chicago - From SharePoint to Office 365 Development
 
CCI 2017 - Introduzione a SharePoint Framework (SPFx) - Fabio Franzini
CCI 2017 - Introduzione a SharePoint Framework (SPFx) - Fabio FranziniCCI 2017 - Introduzione a SharePoint Framework (SPFx) - Fabio Franzini
CCI 2017 - Introduzione a SharePoint Framework (SPFx) - Fabio Franzini
 
ESPC 2016 - From SharePoint to Office 365 Development - The path to your new ...
ESPC 2016 - From SharePoint to Office 365 Development - The path to your new ...ESPC 2016 - From SharePoint to Office 365 Development - The path to your new ...
ESPC 2016 - From SharePoint to Office 365 Development - The path to your new ...
 
SPUnite17 Building Great Client Side Web Parts with SPFx
SPUnite17 Building Great Client Side Web Parts with SPFxSPUnite17 Building Great Client Side Web Parts with SPFx
SPUnite17 Building Great Client Side Web Parts with SPFx
 
Getting started with office 365 add ins development 3 may 2018 - v2
Getting started with office 365 add ins development 3 may 2018 - v2Getting started with office 365 add ins development 3 may 2018 - v2
Getting started with office 365 add ins development 3 may 2018 - v2
 
M365 global developer bootcamp 2019 Intro to SPFx Version
M365 global developer bootcamp 2019 Intro to SPFx VersionM365 global developer bootcamp 2019 Intro to SPFx Version
M365 global developer bootcamp 2019 Intro to SPFx Version
 
SharePoint Saturday Calgary 2017 - From SharePoint to Office 365 Development
SharePoint Saturday Calgary 2017 - From SharePoint to Office 365 DevelopmentSharePoint Saturday Calgary 2017 - From SharePoint to Office 365 Development
SharePoint Saturday Calgary 2017 - From SharePoint to Office 365 Development
 
SharePoint Fest Chicago 2019 - From SharePoint to Office 365 Development
SharePoint Fest Chicago 2019 - From SharePoint to Office 365 DevelopmentSharePoint Fest Chicago 2019 - From SharePoint to Office 365 Development
SharePoint Fest Chicago 2019 - From SharePoint to Office 365 Development
 
Uncovering the Latest in SharePoint Development
Uncovering the Latest in SharePoint DevelopmentUncovering the Latest in SharePoint Development
Uncovering the Latest in SharePoint Development
 
Building share point framework solutions
Building share point framework solutionsBuilding share point framework solutions
Building share point framework solutions
 
Broaden your dev skillset with SharePoint branding options
Broaden your dev skillset with SharePoint branding optionsBroaden your dev skillset with SharePoint branding options
Broaden your dev skillset with SharePoint branding options
 
Introduction to Office Development Topics
Introduction to Office Development TopicsIntroduction to Office Development Topics
Introduction to Office Development Topics
 

Mais de European Collaboration Summit

Mais de European Collaboration Summit (20)

ECS19 - Bram De Jager - Design a secure collaboration solution with Azure In...
ECS19 -  Bram De Jager - Design a secure collaboration solution with Azure In...ECS19 -  Bram De Jager - Design a secure collaboration solution with Azure In...
ECS19 - Bram De Jager - Design a secure collaboration solution with Azure In...
 
ECS19 - Eric Harlan - Increasing throughput of Office 365
ECS19 - Eric Harlan - Increasing throughput of Office 365ECS19 - Eric Harlan - Increasing throughput of Office 365
ECS19 - Eric Harlan - Increasing throughput of Office 365
 
ECS19 - Ahmad Najjar - Logic Apps vs Microsoft Flow - When, how and where?
ECS19 - Ahmad Najjar - Logic Apps vs Microsoft Flow - When, how and where?ECS19 - Ahmad Najjar - Logic Apps vs Microsoft Flow - When, how and where?
ECS19 - Ahmad Najjar - Logic Apps vs Microsoft Flow - When, how and where?
 
ECS19 - Michael Van Horenbeeck - Divide Et Imperat Office 365 Mergers, Acquis...
ECS19 - Michael Van Horenbeeck - Divide Et Imperat Office 365 Mergers, Acquis...ECS19 - Michael Van Horenbeeck - Divide Et Imperat Office 365 Mergers, Acquis...
ECS19 - Michael Van Horenbeeck - Divide Et Imperat Office 365 Mergers, Acquis...
 
ECS19 - Christina Wheeler - Become Data Modeling Superhero
ECS19 - Christina Wheeler - Become Data Modeling SuperheroECS19 - Christina Wheeler - Become Data Modeling Superhero
ECS19 - Christina Wheeler - Become Data Modeling Superhero
 
ECS19 - Ahmad Najjar and Serge Luca - Power Platform Tutorial
ECS19 - Ahmad Najjar and Serge Luca - Power Platform TutorialECS19 - Ahmad Najjar and Serge Luca - Power Platform Tutorial
ECS19 - Ahmad Najjar and Serge Luca - Power Platform Tutorial
 
ECS19 - Vesa Juvonen - SharePoint and Office 365 Development PowerClass
ECS19 - Vesa Juvonen - SharePoint and Office 365 Development PowerClassECS19 - Vesa Juvonen - SharePoint and Office 365 Development PowerClass
ECS19 - Vesa Juvonen - SharePoint and Office 365 Development PowerClass
 
ECS19 - Paolo Pialorsi - Building Portals with modern SharePoint experiences
ECS19 - Paolo Pialorsi - Building Portals with modern SharePoint experiencesECS19 - Paolo Pialorsi - Building Portals with modern SharePoint experiences
ECS19 - Paolo Pialorsi - Building Portals with modern SharePoint experiences
 
ECS19 - Nik Charlebois - Automate the Deployment & Monitoring of SharePoint w...
ECS19 - Nik Charlebois - Automate the Deployment & Monitoring of SharePoint w...ECS19 - Nik Charlebois - Automate the Deployment & Monitoring of SharePoint w...
ECS19 - Nik Charlebois - Automate the Deployment & Monitoring of SharePoint w...
 
ECS19 - Nicki Borell - Microsoft Cybersecurity Reference Architecture
ECS19 - Nicki Borell - Microsoft Cybersecurity Reference ArchitectureECS19 - Nicki Borell - Microsoft Cybersecurity Reference Architecture
ECS19 - Nicki Borell - Microsoft Cybersecurity Reference Architecture
 
ECS19 - Mike Ammerlaan - Microsoft Graph Data Connect
ECS19 - Mike Ammerlaan - Microsoft Graph Data ConnectECS19 - Mike Ammerlaan - Microsoft Graph Data Connect
ECS19 - Mike Ammerlaan - Microsoft Graph Data Connect
 
ECS19 - Vesa Juvonen, Paolo Pialorsi - Building “modern” portals with SharePo...
ECS19 - Vesa Juvonen, Paolo Pialorsi - Building “modern” portals with SharePo...ECS19 - Vesa Juvonen, Paolo Pialorsi - Building “modern” portals with SharePo...
ECS19 - Vesa Juvonen, Paolo Pialorsi - Building “modern” portals with SharePo...
 
ECS19 - Toni Pohl - Develop intelligent apps for the Modern Workplace
ECS19 - Toni Pohl - Develop intelligent apps for the Modern WorkplaceECS19 - Toni Pohl - Develop intelligent apps for the Modern Workplace
ECS19 - Toni Pohl - Develop intelligent apps for the Modern Workplace
 
ECS19 - Thomas Vochten - ESSENTIAL DATABASE ADMINISTRATION SKILLS FOR SHAREPO...
ECS19 - Thomas Vochten - ESSENTIAL DATABASE ADMINISTRATION SKILLS FOR SHAREPO...ECS19 - Thomas Vochten - ESSENTIAL DATABASE ADMINISTRATION SKILLS FOR SHAREPO...
ECS19 - Thomas Vochten - ESSENTIAL DATABASE ADMINISTRATION SKILLS FOR SHAREPO...
 
ECS19 - Thomas Goelles, Stephan Bisser - Unite your workplace with Microsoft'...
ECS19 - Thomas Goelles, Stephan Bisser - Unite your workplace with Microsoft'...ECS19 - Thomas Goelles, Stephan Bisser - Unite your workplace with Microsoft'...
ECS19 - Thomas Goelles, Stephan Bisser - Unite your workplace with Microsoft'...
 
ECS19 - Steven Collier - Live Events in Teams, Yammer and Stream using Extern...
ECS19 - Steven Collier - Live Events in Teams, Yammer and Stream using Extern...ECS19 - Steven Collier - Live Events in Teams, Yammer and Stream using Extern...
ECS19 - Steven Collier - Live Events in Teams, Yammer and Stream using Extern...
 
ECS19 - Serge Luca - MICROSOFT FLOW IN REAL WORLD PROJECTS: 3 YEARS LATER AN...
ECS19 - Serge Luca -  MICROSOFT FLOW IN REAL WORLD PROJECTS: 3 YEARS LATER AN...ECS19 - Serge Luca -  MICROSOFT FLOW IN REAL WORLD PROJECTS: 3 YEARS LATER AN...
ECS19 - Serge Luca - MICROSOFT FLOW IN REAL WORLD PROJECTS: 3 YEARS LATER AN...
 
ECS19 - Samuel Zuercher - Do I still need an Intranet or is MS Teams just eno...
ECS19 - Samuel Zuercher - Do I still need an Intranet or is MS Teams just eno...ECS19 - Samuel Zuercher - Do I still need an Intranet or is MS Teams just eno...
ECS19 - Samuel Zuercher - Do I still need an Intranet or is MS Teams just eno...
 
ECS19 - Rodrigo Pinto - Modernize Your Classic SharePoint Sites
ECS19 - Rodrigo Pinto - Modernize Your Classic SharePoint SitesECS19 - Rodrigo Pinto - Modernize Your Classic SharePoint Sites
ECS19 - Rodrigo Pinto - Modernize Your Classic SharePoint Sites
 
ECS19 - Rodrigo Pinto - Migrating to Teams, real cases and scenarios
ECS19 - Rodrigo Pinto - Migrating to Teams, real cases and scenariosECS19 - Rodrigo Pinto - Migrating to Teams, real cases and scenarios
ECS19 - Rodrigo Pinto - Migrating to Teams, real cases and scenarios
 

Último

Abortion Pills In Pretoria ](+27832195400*)[ đŸ„ Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ đŸ„ Women's Abortion Clinic In Pre...Abortion Pills In Pretoria ](+27832195400*)[ đŸ„ Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ đŸ„ Women's Abortion Clinic In Pre...
Medical / Health Care (+971588192166) Mifepristone and Misoprostol tablets 200mg
 
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
masabamasaba
 
Abortion Pill Prices Tembisa [(+27832195400*)] đŸ„ Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] đŸ„ Women's Abortion Clinic in T...Abortion Pill Prices Tembisa [(+27832195400*)] đŸ„ Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] đŸ„ Women's Abortion Clinic in T...
Medical / Health Care (+971588192166) Mifepristone and Misoprostol tablets 200mg
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
masabamasaba
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
VictoriaMetrics
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
masabamasaba
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
masabamasaba
 

Último (20)

%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
Abortion Pills In Pretoria ](+27832195400*)[ đŸ„ Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ đŸ„ Women's Abortion Clinic In Pre...Abortion Pills In Pretoria ](+27832195400*)[ đŸ„ Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ đŸ„ Women's Abortion Clinic In Pre...
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
tonesoftg
tonesoftgtonesoftg
tonesoftg
 
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
Abortion Pill Prices Tembisa [(+27832195400*)] đŸ„ Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] đŸ„ Women's Abortion Clinic in T...Abortion Pill Prices Tembisa [(+27832195400*)] đŸ„ Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] đŸ„ Women's Abortion Clinic in T...
 
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
 
What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the Situation
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
 
Artyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptxArtyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptx
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
 
WSO2Con2024 - From Blueprint to Brilliance: WSO2's Guide to API-First Enginee...
WSO2Con2024 - From Blueprint to Brilliance: WSO2's Guide to API-First Enginee...WSO2Con2024 - From Blueprint to Brilliance: WSO2's Guide to API-First Enginee...
WSO2Con2024 - From Blueprint to Brilliance: WSO2's Guide to API-First Enginee...
 
WSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaSWSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaS
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
 

ecs19 - Bill Ayers - RE-USE YOUR SHAREPOINT FRAMEWORK SKILLZ TO BUILD OFFICE ADD-INS

  • 1.
  • 2. RE-USE YOUR SHAREPOINT FRAMEWORK SKILLZ TO BUILD OFFICE ADD-INS Bill Ayers M[CM|VP|CT] Flow Simulation Ltd, UK
  • 3. ♡ DIAMOND AND PLATINUM SPONSORS ♡
  • 4. Agenda ‱ Why Office Add-ins? ‱ How Office Add-ins Work ‱ Tools for Building Office Add-ins ‱ Using the Web Development Toolchain ‱ SPFx ‱ Distributing Add-ins ‱ Conclusions ‱ Q & A
  • 5. AGENDA: WHY OFFICE ADD-INS? HOW OFFICE ADD-INS WORK TOOLS FOR BUILDING OFFICE ADD-INS USING THE WEB DEVELOPMENT TOOLCHAIN SPFX DISTRIBUTING ADD-INS CONCLUSIONS Q & A
  • 6. ‱ The de-facto standard for business ‱ > 1.2 b users + 400m outlook.com ‱ Now available on iOS, Android, OS X, Windows Phone and in browsers Office is Everywhere!
  • 7. Add-in vision ‱ Native and intuitive feel ‱ Use UI framework of host client (Office UI Fabric) ‱ Write once, run everywhere ‱ Simple point solutions to automate existing manual processes
  • 9. Extensions for Office VSTOCOM Office Add-ins VBAMacros *all still supported
  • 10. Behind the Scenes Hosted Add-In Web Page (must be HTTPS) XML Manifest file in Exchange, catalog or file store
  • 11. DEMO Could do with something interesting here

  • 12. Office Add-in Shapes Add-in that runs within a document content with read/write access: Excel, PowerPoint, Access Add-in launched contextually from a mail message or appointment: Outlook and Outlook Web Access (OWA), and could include actionable messages Command in the Office UI to launch add-in or execute JavaScript: Outlook, Excel, PowerPoint, Word, OneNote Add-in that runs beside a document/mail with read/write access: Word, Excel, PowerPoint, Project, Outlook Module extension for the Outlook navigation bar: Outlook Excel Custom FunctionsF
  • 13. Win32 Online iPad iPhone Mac Android UWA Read Read Compose Compose Add-in Roadmap https://dev.office.com/add-in-availability
  • 14. Office.js ‱ Access to body and attachments, content ‱ Launch native forms (e.g. reply, new message, appointment) ‱ Modify fields and add attachments ‱ Set/get custom properties on items ‱ Persist user settings JavaScript API Reference: http://dev.office.com/docs/add-ins/overview/office-add-ins
  • 16. Building an Office Add-in ‱ Script Lab add-in ‱ Microsoft Visual Studio ‱ Any Web Editor of you choice (e.g. VS Code) plus Yeoman project generator https://dev.office.com/blogs/creating-office- add-ins-with-any-editor-introducing-yo-office Getting Started at dev.office.com – can use MSDN subscription, sign up for Office Developer Program for free 1 year licence, or get a free 30-day Office 365 trial
  • 17. DEMO
  • 18. Using Visual Studio 2017 ‱ Visual Studio 2017 (including community edition) – check the installer option ‱ Create new project: Add-in for Office App for Office Web Add-in ‱ Design user interface as a web site, edit manifest, etc

  • 19. More Development Choices
 ‱ Use any technology that delivers for the web ‱ Yeoman generator for skeleton add-in project (similar to SharePoint Framework toolchain) Hosted on GitHub
  • 20. yo office! ‱ Go to https://nodejs.org/ and install LTS version ‱ npm install -g yo ‱ npm install -g generator-office ‱ yo office
  • 22. React ‱ Open-source framework backed by Facebook ‱ Component model ‱ Virtual DOM ‱ “Weird” JSX/TSX syntax ‱ Go to https://reactjs.org/
  • 23. App component with title property Component has properties Component’s render function returns one root element with child elements (can wrap in div or empty element <>) Elements are converted into valid JavaScript by the JSX compiler Events are bound with function.bind syntax or lambda expressions: e=>add(e) Component props are immutable, but component state can change using setState method ReactDOM.render method used to bind initial App element to the element in the DOM with the ID “app”. React App class App extends React.Component { constructor(props) { super(props); this.state = { items: [] } } render() { const stocks = this.state.items.map((item, index) => ( <li>{item}</li> )); return ( <div> <h1>{this.props.title}</h1> <div> <input type="text" ref="newItem“ onKeyPress={this.add.bind(this)}/> </div> <ul>{stocks}</ul> </div> ); } add(event) { if (event.key == "Enter") { var list = this.state.items; list.unshift(this.refs.newItem.value); this.setState({items: list}); this.refs.newItem.value = ""; } } } ReactDOM.render(<App title="Hello World!" />, document.getElementById("app"));
  • 24. Office.initialize and React // Bootstrap root component in Office.initialize Office.initialize = () => { ReactDOM.render( <App title={title} />, document.querySelector('#container') ); };
  • 25. Office UI Fabric React Components React component library with more than 40 reusable components Add the office-ui-fabric-react npm package Typing available for TypeScript Office UI Fabric Core Includes styles, icons, typography, brand icons, colors, grids, and more as CSS and JavaScript if not using React. PnP SPFx React Components: http://github.com/SharePoint/sp-dev-fx-controls-react/
  • 26. Office Add-ins Design Toolkit ‱ Adobe XD Document ‱ Download Adobe XD (free) ‱ Download toolkit from https://aka.ms/addins_toolkit
  • 28. Design Guidelines ‱ Design explicitly for Office ‱ Focus on key tasks ‱ Favour content over chrome ‱ Go easy on the branding ‱ Keep users in control ‱ Design for all Office platforms and input methods ‱ First Run experience ‱ See: https://docs.microsoft.com/en-us/office/dev/add-ins/design/add-in-design
  • 29. Simplified component structure – no this, no classes, no constructor, no componentDidMount, etc. Pure functional components Use functions instead of classes Functional (Stateless) Components were introduced with React 1.4 React Hooks new in React 16.8 Current generator-office uses React 16.8 Current SPFx generator (1.8) uses React 16.7 One more thing - React Hooks function App(props) { const [items, setItems] = React.useState([]); const stocks = items.map((item, index) => ( <li>{item}</li> )); function add(event) { if (event.key == "Enter") { var list = items; list.unshift(event.target.value); setItems({items: list}); } } return ( <div> <h1>{props.title}</h1> <div> <input type="text“ onKeyPress={event=>add(event)} /> </div> <ul>{stocks}</ul> </div> ); } } ReactDOM.render(<App title="Hello World!" />, document.getElementById("app"));
  • 30. Refactored function Stocks({items}) { return ( <ul> {items.map(item => <li>{item}</li>)} </ul> ); } function App(props) { const [items, setItems] = useState([]); function add(event) { if (event.key == "Enter") { var list = items; list.unshift(event.target.value); setItems({items: list}); } } return ( <div> <h1>{props.title}</h1> <div> <input type="text“ onKeyPress={event=>add(event)} /> </div> <Stocks items={items} /> </div> ); } } ReactDOM.render(<App title="Hello World!" />, document.getElementById("app")); Stocks is extracted as a separate component. Stocks only depends on its props so it is a pure or “stateless” functional component; no state, no side-effects. This makes Stocks very easy to test. Implicit object destructuring operator {} used instead of props.items.
  • 31. DEMO
  • 33. Dialog API ‱ Dialog API allows you to open a dialog box from an Office Add-in. ‱ Typically used for authentication prompts with external systems. ‱ Can also be used to show UI elements that are too big for the task pane.
  • 34. Dialog API Office.context.ui.displayDialogAsync(“https://myaddin.contoso.com/login.html", options, callbackFunction); open to a page hosted from a valid app domain (defined in manifest) and then can display any page that is hosted using HTTPS e.g. height and width optional – enables host page to get messages from dialog
  • 35. What if we could just use SPFx? Introduced at //build/ 2019 Still in early stages SPFx component in task pane includes a call to Office.js Get access to SharePoint data (if authenticated) Get access to Microsoft Graph through MSGraphClient No need to worry about where to host the Add-in Currently planned for preview in 1.9 release of SPFx
  • 36. DEMO
  • 37.
  • 38. Deployment Options ‱ Debugging – launch from Visual Studio or Visual Studio Code ‱ Side-loading – ad-hoc pull-driven deployment ‱ App Catalog – for internal distribution ‱ App Store – for broader distribution ‱ App Store – commercial distribution ‱ Centralized Deployment
  • 39. Conclusions: ‱ Office Add-ins – potential for huge business benefit for your users with minimal effort ‱ > 1.5bn potential users across multiple platforms ‱ Use same skillset, possibly even code, across Office Add-ins, SharePoint, Web, Universal Apps and Mobile Cross-platform Apps ‱ Your choice of developer tooling – use what you know ‱ Platform continuing to get more capabilities and better reach ‱ Watch out for SPFx Office Add-in component in SPFx version 1.9
  • 40. Sign up for the Office 365 Developer Program Start at http://dev.office.com Build your first Office Add- in Use Yeoman, Visual Studio Code, ReactJS and other familiar tools from SPFx development right now Think about how Office Add-ins could help your business Solve real business problems, delight users, watch out for SPFx 1.9 CALL TO ACTION
  • 41. thank you questions? SPDOCTOR.COM@SPDOCTOR Bill Ayers Technical Director Flow Simulation Ltd. Office 365 Dev Center dev.office.com (redirect) Office Add-ins Documentation https://docs.microsoft.com/e n-us/office/dev/add-ins/ Training content on GitHub https://github.com/OfficeDev/ TrainingContent/ Office UI Fabric https://developer.microsoft.c om/en-us/fabric Script Lab https://github.com/OfficeDev/ script-lab Discover what’s coming with the Microsoft 365 Roadmap aka.ms/M365Roadmap Follow me and share this session @SPDoctor #Collabsummit