Office 365: introduzione allo sviluppo – add-in commands Parte 2 (Word, Excel, PowerPoint)

 

In questo secondo post dedicato agli add-in commands di O365, andremo ad analizzare gli elementi che possiamo utilizzare per la personalizzazione della UI di Word, Excel e PowerPoint.
Dato che la logica generale è la stessa descritta nel precedente post dedicato agli add-in commands per Outlook, ci concentreremo soltanto sugli elementi che presentano caratteristiche specifiche per i client sopra citati. Vi consiglio pertanto dare uno sguardo alla parte 1, prima di procedere con la lettura di questo post.

Una cosa importante da sottolineare è che al momento i commands per Word, Excel e PowerPoint sono in Developer Preview, e non è quindi possibile testarne il funzionamento direttamente dal debugger di Visual studio (con il classico F5), ma è necessario seguire alcune procedure particolari per poterli “attivare” sul client. I passaggi dettagliati per attivare queste funzionalità li trovate nella sezione Quick Start a questo indirizzo: https://github.com/OfficeDev/Office-Add-in-Commands-Samples

Detto questo, iniziamo a vedere nel dettaglio gli elementi del manifest da utilizzare per questi client.

La prima variazione rispetto ad Outlook è che l’attributo xmlns dell’elemento VersionOverrides deve essere impostato a “http://schemas.microsoft.com/office/taskpaneappversionoverrides” ( mentreL’attributo xsi:type rimane lo stesso, ovvero “VersionOverridesV1_0” )

 <VersionOverrides xmlns="http://schemas.microsoft.com/office/taskpaneappversionoverrides" xsi:type="VersionOverridesV1_0">

Le altre grosse differenze si trovano invece all’interno dell’elemento Hosts e in particolare per quanto riguarda la definizione vera e propria dei controlli presenti nell’elemento ExtensionPoint

L’attributo xsi:type dell’ExtensionPoint, che serve per definire quale “area” della UI stiamo andando a personalizzare, può assumere 2 valori:

- PrimaryCommandSurface : definisce un nuovo elemento nel ribbon
- ContextMenu : definisce una voce nel menù contestuale che appare cliccando con il tasto destro del mouse sulla UI.

All’interno dell’ExtensionPoint possiamo quindi definire i comandi veri e propri, che possono essere raggruppati grazie ad alcuni controlli di tipo “contenitore”. Se vogliamo infatti aggiungere elementi ad un tab standard del ribbon, dobbiamo utilizzare l’elemento OfficeTab, mentre per crearne uno nuovo occorre utilizzare CustomTab. E’ importante precisare che non è possibile utilizzare entrambe i tipi contemporaneamente nello stesso ExtensionPoint. Per aggiungere invece nuove voci al menù contestuale occorre utilizzare l’elemento OfficeMenu.

Qui di seguito sono riportati i valori consentiti per l’attributo id di OfficeTab, grazie ai quali possiamo definire in quale tab standard di Office aggiungere i commands:

Excel

TabHome
TabInsert
TabPageLayoutExcel
TabFormulas
TabData
TabReview
TabView
TabDeveloper
TabAddIns
TabPrintPreview
TabBackgroundRemoval

Word

TabHome
TabInsert
TabWordDesign
TabPageLayoutWord
TabReferences
TabMailings
TabReviewWord
TabView
TabDeveloper
TabAddIns
TabBlogPost
TabBlogInsert
TabPrintPreview
TabOutlining
TabConflicts
TabBackgroundRemoval
TabBroadcastPresentation

PowerPoint

TabHome
TabInsert
TabDesign
TabTransitions
TabAnimations
TabSlideShow
TabReview
TabView
TabDeveloper
TabAddIns
TabPrintPreview
TabMerge
TabGrayscale
TabBlackAndWhite
TabBroadcastPresentation
TabSlideMaster
TabHandoutMaster
TabNotesMaster
TabBackgroundRemoval
TabSlideMasterHome

Per quanto riguarda i comandi Button e Menu abbiamo la stessa identica struttura descritta nel post precedente, con l’unica differenza che in questo caso se il controllo Menu viene utilizzato all’interno di un elemento di tipo ContextMenu, non verrà visualizzato come una drop-down list nel ribbon, ma bensì come nuova voce del menù contestuale.

In questo esempio viene aggiunto un menù per aprire un nuovo TaskPane (testTaskPane ). La URL del pannello deve essere inserita nell’elemento Resources con id=”residTestTaskPaneUrl”, come descritto in dettaglio nel post precedente

 <Control xsi:type="Menu" id="myMenu">
   <Label resid="residMenuLabel" />
   <Supertip>
     <Title resid="residMenuLabel" />
     <Description resid="residToolTipLabel" />
   </Supertip>
   <Icon>
     <bt:Image size="16" resid="icon32x32" />
     <bt:Image size="32" resid="icon32x32" />
     <bt:Image size="80" resid="icon32x32" />
   </Icon>
   <Items>
     <Item id="itemId1">
       <Label resid="residItem1"/>
       <Supertip>
         <Title resid="residItam1" />
         <Description resid="residToolTipItem1" />
       </Supertip>
       <Icon>
         <bt:Image size="16" resid="icon32x32" />
         <bt:Image size="32" resid="icon32x32" />
         <bt:Image size="80" resid="icon32x32" />
       </Icon>
       <Action xsi:type="myAction">
         <TaskpaneId>testTaskPane</TaskpaneId>
         <SourceLocation resid="residTestTaskPaneUrl" />
       </Action>
     </Item>
   </Items>
 </Control>

 

Tutta la documentazione relativa agli add-in commands per Word, Excel e PowerPoint è disponibile all’indirizzo:

https://msdn.microsoft.com/en-us/library/office/mt621545.aspx