Qlikview REST connector pagination settings for OData source xml - rest

I can't seem to get the pagination settings right for the Qlik REST connector getting data from an OData-source. It's publicly available Dutch statistics (CBS).
An example is: https://opendata.cbs.nl/ODataFeed/odata/37259ned/TypedDataSet
First bit of the response:
<?xml version="1.0" encoding="utf-8"?>
<feed xml:base="http://opendata.cbs.nl/ODataFeed/OData/37259ned" xmlns="http://www.w3.org/2005/Atom" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns:georss="http://www.georss.org/georss" xmlns:gml="http://www.opengis.net/gml">
<id>https://opendata.cbs.nl/ODataFeed/OData/37259ned/TypedDataSet</id>
<title type="text">TypedDataSet</title>
<updated>2018-06-25T02:00:00+02:00</updated>
<link rel="self" title="TypedDataSet" href="https://opendata.cbs.nl/ODataFeed/OData/37259ned/TypedDataSet" />
<entry>
<id>https://opendata.cbs.nl/ODataFeed/OData/37259ned/TypedDataSet(0)</id>
<category term="Cbs.OData.TData" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />
<link rel="self" href="https://opendata.cbs.nl/ODataFeed/OData/37259ned/TypedDataSet(0)" />
<title />
<updated>2018-06-25T02:00:00+02:00</updated>
<author>
<name />
</author>
<content type="application/xml">
<m:properties>
<d:ID m:type="Edm.Int32">0</d:ID>
<d:Geslacht>T001038</d:Geslacht>
<d:RegioS xml:space="preserve">NL01 </d:RegioS>
<d:Perioden>1960JJ00</d:Perioden>
<d:BevolkingOp1Januari_1 m:type="Edm.Double">11417254</d:BevolkingOp1Januari_1>
<d:LevendGeborenKinderen_2 m:type="Edm.Double">238789</d:LevendGeborenKinderen_2>
<d:LevendGeborenKinderenRelatief_3 m:type="Edm.Double">20.8</d:LevendGeborenKinderenRelatief_3>
<d:Overledenen_4 m:type="Edm.Double">87486</d:Overledenen_4>
<d:OverledenenRelatief_5 m:type="Edm.Double">7.6</d:OverledenenRelatief_5>
<d:Geboorteoverschot_6 m:type="Edm.Double">151303</d:Geboorteoverschot_6>
<d:TotaalVestiging_7 m:type="Edm.Double">551116</d:TotaalVestiging_7>
<d:TotaalVestigingRelatief_8 m:type="Edm.Double">48</d:TotaalVestigingRelatief_8>
<d:Immigratie_9 m:type="Edm.Double">45407</d:Immigratie_9>
<d:UitAndereGemeente_10 m:type="Edm.Double">505709</d:UitAndereGemeente_10>
<d:TotaalVertrekInclusiefCorrecties_11 m:null="true" />
<d:TotaalVertrekInclusiefCoRelatief_12 m:null="true" />
<d:TotaalVertrekExclusiefCorrecties_13 m:type="Edm.Double">564209</d:TotaalVertrekExclusiefCorrecties_13>
<d:TotaalVertrekExclusiefCoRelatief_14 m:type="Edm.Double">49.1</d:TotaalVertrekExclusiefCoRelatief_14>
<d:EmigratieInclusiefAdministratieveC_15 m:null="true" />
<d:EmigratieExclusiefAdministratieveC_16 m:type="Edm.Double">58226</d:EmigratieExclusiefAdministratieveC_16>
<d:NaarAndereGemeente_17 m:type="Edm.Double">505983</d:NaarAndereGemeente_17>
<d:VestigingsoverschotInclusiefCorrecties_18 m:null="true" />
<d:VestigingsoverschotExclusiefCorrecties_19 m:type="Edm.Double">-13093</d:VestigingsoverschotExclusiefCorrecties_19>
<d:TotaalSaldoCorrecties_20 m:type="Edm.Double">544</d:TotaalSaldoCorrecties_20>
<d:SaldoAdministratieveCorrecties_21 m:null="true" />
<d:SaldoOverigeCorrecties_22 m:null="true" />
<d:TotaleGroei_23 m:type="Edm.Double">138754</d:TotaleGroei_23>
<d:TotaleGroeiRelatief_24 m:type="Edm.Double">12.2</d:TotaleGroeiRelatief_24>
<d:BevolkingOp31December_25 m:type="Edm.Double">11556008</d:BevolkingOp31December_25>
</m:properties>
</content>
</entry>
The source gives a maximum of 10000 records per page. I need to get the data on the following page(s) as well.
The last few lines look like this:
</entry>
<link rel="next" href="https://opendata.cbs.nl/ODataFeed/odata/37259ned/TypedDataSet?$skip=10000" />
</feed>
I've tried the sollution in this thread: Qlikview REST connector pagination namespaced XML
However this gives me an unlimited number of records. The data-load does not stop at the last record.
Pagination settings used:
Pagination Type: Next URL
Next URL field path: feed/link/attr:href
Can anybody help me with the settings?

Related

Defining custom managed service fails

We are trying to develop custom Intershop Managed Service following cookbook: https://support.intershop.com/kb/index.php/Display/2329T4
But when trying to enable service in Operations for our Organization, it is not listed there and there is a warning log message:
WARN localhost ES1 appserver0 [Test-Site] com.intershop.component.service.internal.service.ORMServiceConfigurationBORepositoryImpl [] [Storefront] [8ocH1vmRUp4E1qKOZQQC5FFRtQai9r4QV6dAV1yx] [oBlLAFsfl5kFMqjA-0-00] "oBlLAFsfl5kFMqjA-0-00" Can't load implementation for service definition: cartridge='service_esb', service definition id='ESBServiceDefinition'.
Here is services.compoment:
<?xml version="1.0" encoding="UTF-8"?>
<components xmlns="http://www.intershop.de/component/2010">
<!-- Adapter interface -->
<contract name="ESBService" class="com.test.service.capi.ESBService" />
<!-- ServiceDefintion implementation -->
<implementation name="ESBServiceDefinitionImpl" class="com.test.service.internal.ESBServiceDefinition" implements="ServiceDefinition" />
<!-- ServiceDefintion instance that has already one adapter added -->
<instance name="ESBServiceDefinition" with="ESBServiceDefinitionImpl" />
<!-- Registering the ServiceDefintion instance to the (global) ServiceDefinitionRegistry -->
<fulfill requirement="serviceDefinition" of="serviceDefinitionRegistry">
<instance with="ServiceDefinitionRegistry.Entry">
<fulfill requirement="cartridgeID" value="service_esb" />
<fulfill requirement="groupID" value="service.group.name.test" />
<fulfill requirement="parameterGroupID" value="ESBParameters" />
<fulfill requirement="serviceDefinitionID" value="esbService" />
<fulfill requirement="localizationKeyForName" value="service.definition.name.esbService" />
<fulfill requirement="serviceDefinition" with="ESBServiceDefinition" />
<fulfill requirement="ChainElementID" value="LogHandler" />
<fulfill requirement="ChainElementID" value="MonitorHandler" />
</instance>
</fulfill>
</components>
All required classes (AdapterInterface, Adapter, ExecutorService, ServiceDefinition - extending AbstractServiceDefinition) are implemented and compiled successfully. Does anybody knows why Intershop can't load implementation?
Also, in Intershop Studio in component editor following error is displayed when services.component is opened:
With 'Implementation - ESBServiceDefinitionImpl (unresolved)' cannot be resolved
But when clicking CTRL+left mouse button on "ESBServiceDefinitionImpl" implementation is found and
<implementation name="ESBServiceDefinitionImpl" class="com.test.service.internal.ESBServiceDefinition" implements="ServiceDefinition" />
is highlighted.
Of course it was typo :) I named folder with service.component "component", and not "components".
Thank you all for your help!
Maybe the ServiceDefinitionID does not match:
esbService vs. ESBServiceDefinition
Can you try the following component settings:
<?xml version="1.0" encoding="UTF-8"?>
<components xmlns="http://www.intershop.de/component/2010" scope="global">
<!-- Adapter interface -->
<contract name="ESBService" class="com.test.service.capi.ESBService" />
<!-- ServiceDefintion implementation -->
<implementation name="com.test.service.internal.ESBServiceDefinition" class="com.test.service.internal.ESBServiceDefinition" implements="ServiceDefinition" />
<!-- Registering the ServiceDefintion instance to the (global) ServiceDefinitionRegistry -->
<fulfill requirement="serviceDefinition" of="serviceDefinitionRegistry">
<instance with="ServiceDefinitionRegistry.Entry">
<fulfill requirement="cartridgeID" value="service_esb" />
<fulfill requirement="groupID" value="service.group.name.test" />
<fulfill requirement="parameterGroupID" value="ESBParameters" />
<fulfill requirement="serviceDefinitionID" value="esbService" />
<fulfill requirement="localizationKeyForName" value="service.definition.name.esbService" />
<fulfill requirement="serviceDefinition">
<instance with="com.test.service.internal.ESBServiceDefinition" />
</fulfill>
<fulfill requirement="ChainElementID" value="LogHandler" />
<fulfill requirement="ChainElementID" value="MonitorHandler" />
</instance>
</fulfill>
</components>
This is a long shot but did you try to redeploy the server after creating the custom managed service?
Stop the server.
Run gradlew deployServer
Start the server

Office add-in validation fails for IconUrl though it is a 32x32 px image

I have the following line in my manifest
<IconUrl DefaultValue="images/icon-32.png"/>
and also
<Host ...>
...
<Control ...>
....
<Icon>
<bt:Image size="16" DefaultValue="images/icon-16.png"/>
<bt:Image size="32" DefaultValue="images/icon-32.png"/>
<bt:Image size="80" DefaultValue="images/icon-80.png"/>
</Icon>
</Control>
</Host>
But when I submit for approval, I am getting the following error from the Office Store Team.
The icon referenced in the IconUrl element of your add-in manifest must be 32x32 pixels in dimension.
And it is referred to the document Validation Policies point 5.10
I have verified the image to be exactly 32x32 px in size in PNG format. While testing the add-in, the icon-32.png is loaded in the Home menu panel
Update
The complete manifest file is added below
<?xml version="1.0" encoding="UTF-8"?>
<OfficeApp
xmlns="http://schemas.microsoft.com/office/appforoffice/1.1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:bt="http://schemas.microsoft.com/office/officeappbasictypes/1.0"
xmlns:ov="http://schemas.microsoft.com/office/taskpaneappversionoverrides" xsi:type="TaskPaneApp">
<Id>aabbccdd-aabbccdd-aabbccdd-aabbccdd</Id>
<Version>1.0</Version>
<ProviderName>TestAddin</ProviderName>
<DefaultLocale>en-US</DefaultLocale>
<DisplayName DefaultValue="TestAddin" />
<Description DefaultValue="A Test addin"/>
<IconUrl DefaultValue="https://wireframepro.mockflow.com/integrations/office365/images/icon-32.png" />
<SupportUrl DefaultValue="http://tesaddin.local" />
<AppDomains>
<AppDomain>http://tesaddin.local/</AppDomain>
</AppDomains>
<Hosts>
<Host Name="Document" />
</Hosts>
<DefaultSettings>
<SourceLocation DefaultValue="http://tesaddin.local/index.html" />
</DefaultSettings>
<Permissions>ReadWriteDocument</Permissions>
<Requirements>
<Sets DefaultMinVersion="1.1">
<Set Name="WordApi" MinVersion="1.1"/>
</Sets>
</Requirements>
<VersionOverrides
xmlns="http://schemas.microsoft.com/office/taskpaneappversionoverrides" xsi:type="VersionOverridesV1_0">
<Hosts>
<Host xsi:type="Document">
<DesktopFormFactor>
<GetStarted>
<Title resid="ACME.GetStarted.Title"/>
<Description resid="ACME.GetStarted.Description"/>
<LearnMoreUrl resid="ACME.GetStarted.LearnMoreUrl"/>
</GetStarted>
<ExtensionPoint xsi:type="PrimaryCommandSurface">
<OfficeTab id="TabHome">
<Group id="ACME.Group1">
<Label resid="ACME.Group1Label" />
<Icon>
<bt:Image size="16" resid="ACME.tpicon_16x16" />
<bt:Image size="32" resid="ACME.tpicon_32x32" />
<bt:Image size="80" resid="ACME.tpicon_80x80" />
</Icon>
<Control xsi:type="Button" id="ACME.TaskpaneButton">
<Label resid="ACME.TaskpaneButton.Label" />
<Supertip>
<Title resid="ACME.TaskpaneButton.Label" />
<Description resid="ACME.TaskpaneButton.Tooltip" />
</Supertip>
<Icon>
<bt:Image size="16" resid="ACME.tpicon_16x16" />
<bt:Image size="32" resid="ACME.tpicon_32x32" />
<bt:Image size="80" resid="ACME.tpicon_80x80" />
</Icon>
<Action xsi:type="ShowTaskpane">
<TaskpaneId>ButtonId1</TaskpaneId>
<SourceLocation resid="ACME.Taskpane.Url" />
</Action>
</Control>
</Group>
</OfficeTab>
</ExtensionPoint>
</DesktopFormFactor>
</Host>
</Hosts>
<Resources>
<bt:Images>
<bt:Image id="ACME.tpicon_16x16" DefaultValue="https://wireframepro.mockflow.com/integrations/office365/images/icon-16.png" />
<bt:Image id="ACME.tpicon_32x32" DefaultValue="https://wireframepro.mockflow.com/integrations/office365/images/icon-32.png" />
<bt:Image id="ACME.tpicon_80x80" DefaultValue="https://wireframepro.mockflow.com/integrations/office365/images/icon-80.png" />
</bt:Images>
<bt:Urls>
<bt:Url id="ACME.Taskpane.Url" DefaultValue="http://tesaddin.local/index.html" />
<bt:Url id="ACME.GetStarted.LearnMoreUrl" DefaultValue="https://go.microsoft.com/fwlink/?LinkId=276812" />
</bt:Urls>
<bt:ShortStrings>
<bt:String id="ACME.TaskpaneButton.Label" DefaultValue="Open Editor" />
<bt:String id="ACME.Group1Label" DefaultValue="Test Addin" />
<bt:String id="ACME.GetStarted.Title" DefaultValue="Get started with Test Addin" />
</bt:ShortStrings>
<bt:LongStrings>
<bt:String id="ACME.TaskpaneButton.Tooltip" DefaultValue="Open Editor" />
<bt:String id="ACME.GetStarted.Description" DefaultValue="Test add-in has been loaded succesfully. You can access the editor in HOME tab, click Open Editor" />
</bt:LongStrings>
</Resources>
</VersionOverrides>
</OfficeApp>
I confirmed the image referenced in your IconUrl is 32x32. Based on what you've posted, I don't see a problem with your image. I suggest re-submitting and mentioning that you couldn't replicate the icon issue from the previous failure.
There are a couple of issue with your manifest that you should address first:
The requirements element should come immediately after your hosts element. While this shouldn't effect the add-in, it is tripping up the automated validation script. Simply moving it after hosts will eliminate this being incorrectly flagged during manifest validation.
You've got a couple of references to http://tesaddin.local/index.html. Add-ins are required to operate over a secure transport (https). The only URIs in your manifest that should use http are the XML schema references. Given the .local, I assume this is just a standing URL for posting on SO so this may not be an issue in your actual manifest.

Respon with status: 0 for URL: null

im using ionic view legacy and the http post don't have any problem about it. but when migrating using ionic view pro when doing http post then show error "Respon with status: 0 for URL: null".
This is a part of my config.xml
<access origin="*" subdomain="true" />
<allow-navigation href="*" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*" />
<allow-intent href="geo:*" />
<plugin name="ionic-plugin-keyboard" spec="~2.2.1" />
<plugin name="cordova-plugin-statusbar" spec="2.2.2" />
<plugin name="cordova-plugin-device" spec="1.1.4" />
<plugin name="cordova-plugin-splashscreen" spec="~4.0.1" />
<plugin name="cordova-plugin-ionic" spec="^1.1.9">
<variable name="APP_ID" value="-" />
<variable name="CHANNEL_NAME" value="Master" />
<variable name="UPDATE_METHOD" value="auto" />
</plugin>
<plugin name="cordova-plugin-whitelist" spec="^1.3.1" />
this problem because of CORS so at back end i just add :
/* Allow from any origin */
if (isset($_SERVER['HTTP_ORIGIN'])) {
header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}");
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Max-Age: 86400');
}
but problem still not solved.
Finally… i solve this problem with change from http to https and check header send. Headher from jwt is my problem, so i change it using post not header.

Sharepoint 2010 REST List Service is missing person fields?

When accessing a Sharepoint 2010 list via the REST service endpoint using listdata.svc:
.../_vti_bin/listdata.svc/ExpenseBudgetSubmissionRequests
The response is missing person/user fields that are defined in the list:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<feed xml:base=".../_vti_bin/listdata.svc/" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns="http://www.w3.org/2005/Atom">
<title type="text">ExpenseBudgetSubmissionRequests</title>
<id>.../_vti_bin/listdata.svc/ExpenseBudgetSubmissionRequests/</id>
<updated>2017-08-17T08:03:15Z</updated>
<link rel="self" title="ExpenseBudgetSubmissionRequests" href="ExpenseBudgetSubmissionRequests" />
<entry m:etag="W/"1"">
<id>.../_vti_bin/listdata.svc/ExpenseBudgetSubmissionRequests(1)</id>
<title type="text">Department1</title>
<updated>2017-08-16T11:20:29+01:00</updated>
<author>
<name />
</author>
<link rel="edit" title="ExpenseBudgetSubmissionRequestsItem" href="ExpenseBudgetSubmissionRequests(1)" />
<link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Status" type="application/atom+xml;type=entry" title="Status" href="ExpenseBudgetSubmissionRequests(1)/Status" />
<link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/CreatedBy" type="application/atom+xml;type=entry" title="CreatedBy" href="ExpenseBudgetSubmissionRequests(1)/CreatedBy" />
<link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/ModifiedBy" type="application/atom+xml;type=entry" title="ModifiedBy" href="ExpenseBudgetSubmissionRequests(1)/ModifiedBy" />
<link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Attachments" type="application/atom+xml;type=feed" title="Attachments" href="ExpenseBudgetSubmissionRequests(1)/Attachments" />
<category term="Microsoft.SharePoint.DataService.ExpenseBudgetSubmissionRequestsItem" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />
<content type="application/xml">
<m:properties>
<d:ContentTypeID>0x0100F434AF171BE4B04F8C760EB990D765EF</d:ContentTypeID>
<d:Department>Department1</d:Department>
<d:CostCentre>CostCentre1</d:CostCentre>
<d:FinancialYear m:type="Edm.Double">2017</d:FinancialYear>
<d:StatusValue>Unsubmitted</d:StatusValue>
<d:Id m:type="Edm.Int32">1</d:Id>
<d:ContentType>Item</d:ContentType>
<d:Modified m:type="Edm.DateTime">2017-08-16T11:20:29</d:Modified>
<d:Created m:type="Edm.DateTime">2017-08-16T11:20:29</d:Created>
<d:CreatedById m:type="Edm.Int32">2</d:CreatedById>
<d:ModifiedById m:type="Edm.Int32">2</d:ModifiedById>
<d:Owshiddenversion m:type="Edm.Int32">1</d:Owshiddenversion>
<d:Version>1.0</d:Version>
<d:Path>.../Lists/Expense Budget Submission Requests</d:Path>
</m:properties>
</content>
</entry>
</feed>
Attempted to specify person fields through the $select and $exapnd parameters but with no success. How do you access the person fields?
Credit to this blog entry:
https://thesharepointdive.wordpress.com/2014/09/17/user-field-does-not-appear-sharepoint-2010-rest-services/
The List attribute is missing from the Schema.xml, however without the right access I cannot seem to edit the Schema xml file directly.
Solution: In the list settings set the person field to choose from a user group. You can always set it back to All users afterwards but this action creates the List attribute against the field in the list schema.xml.
User fields are now present in the REST response.

How to create new tab with buttons in word 2016

I am new to office 365. I have developed one taskpane add in (testaddin) for word 2016 using javacript api. In word 2016, I want to create new tab (testtab) and add a button to it . On clicking that button, i need to display my testaddin in taskpane. I have got sample manifest file here. https://github.com/OfficeDev/Office-Add-in-Commands-Samples/tree/master/Word. After downloading files where to place the manifest file.
I already have one shared directory which contains my testaddin manifest file and its loading in taskpane.
Any help will be really appreciated.
The manifest you refer from GitHub is a runnable one. We can modify it base on our requirement and deploy it into the share folder too. For example, to create a new tab on the ribbon instead of using the build-in tab, we need to use the “CustomTab” instead of “OfficeTab”.
Here is the detail steps:
Modify the manifeste like below(you need to modify the source
location and images based on your business requirement)
<?xml version="1.0" encoding="UTF-8"?>
<OfficeApp xmlns="http://schemas.microsoft.com/office/appforoffice/1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bt="http://schemas.microsoft.com/office/officeappbasictypes/1.0" xmlns:ov="http://schemas.microsoft.com/office/taskpaneappversionoverrides" xsi:type="TaskPaneApp">
<!-- BeginBasicSettings: Add-in metadata, used for all versions of Office unless override provided -->
<!--IMPORTANT! Id must be unique for your add-in, if you clone this manifest ensure that you change this id to your own GUID -->
<Id>651a32a9-ab8a-4579-ac9f-df1a11a64e54</Id>
<!--Version. Updates from the store only get triggered if there is a version change -->
<Version>1.0.0.0</Version>
<ProviderName>Contoso</ProviderName>
<DefaultLocale>en-US</DefaultLocale>
<!-- The display name of your add-in. Used on the store and various placed of the Office UI such as the add-ins dialog -->
<DisplayName DefaultValue="Citations" />
<Description DefaultValue="Citations Example"/>
<!--Icon for your add-in. Used on installation screens and the add-ins dialog -->
<IconUrl DefaultValue="https://i.imgur.com/LltG56v.png" />
<!--Todo: Add requirement sets and remove commenting of high res icon -->
<!--The HighResolutionIcon element is commented because it is valid only for 1.1 (or above) versions of the manifest.
To use this property, convert this manifest to version 1.1 by adding an API set in the Activation tab of the manifest editor.-->
<!--<HighResolutionIconUrl DefaultValue="https://i.imgur.com/MPuvMiq.png" />-->
<!--Domains that will be allowed when navigating. For example, if you use ShowTaskpane and then have an href link, navigation will only be allowed if the domain is on this list -->
<AppDomains>
<AppDomain>AppDomain1</AppDomain>
<AppDomain>AppDomain2</AppDomain>
<AppDomain>AppDomain3</AppDomain>
</AppDomains>
<!--EndBasicSettings-->
<!--BeginTaskpaneMode integration. Office 2013 and any client that doesn't understand commands will use this section.
This section will also be used if there are no VersionOverrides -->
<Hosts>
<Host Name="Document" />
</Hosts>
<DefaultSettings>
<SourceLocation DefaultValue="https://addinwithfabric.azurewebsites.net/index.html" />
</DefaultSettings>
<!--EndTaskpaneMode integration -->
<Permissions>ReadWriteDocument</Permissions>
<!--BeginAddinCommandsMode integration-->
<VersionOverrides xmlns="http://schemas.microsoft.com/office/taskpaneappversionoverrides" xsi:type="VersionOverridesV1_0">
<!-- Optional, override the description of the Add-in -->
<Description resid="residToolTip" />
<!--Required, hosts node. Each host can have a different set of commands -->
<Hosts>
<!--Specific host. Workbook=Excel, Document=Word, Presentation=PowerPoint -->
<Host xsi:type="Document">
<!-- Form factor. Currenly only DesktopFormFactor is supported. We will add TabletFormFactor and PhoneFormFactor in the future-->
<DesktopFormFactor>
<!--GetStarted information used on the callout that appears when installing the add-in.
Ensure you have build 16.0.6769 or above for GetStarted section to work-->
<GetStarted>
<!--Title of the Getting Started callout. resid points to a ShortString resource -->
<Title resid="Contoso.GetStarted.Title"/>
<!--Description of the Getting Started callout. resid points to a LongString resource -->
<Description resid="Contoso.GetStarted.Description"/>
<!--Not used right now but you need to provide a valid resource. We will add code in the future to consume this URL.
resid points to a Url resource -->
<LearnMoreUrl resid="Contoso.GetStarted.LearnMoreUrl"/>
</GetStarted>
<!--Function file is an html page that includes the javascript where functions for ExecuteAction will be called.
Think of the FunctionFile as the "code behind" ExecuteFunction
This sample doesn't use this file, just adding the element for reference-->
<!--PrimaryCommandSurface==Main Office Ribbon-->
<ExtensionPoint xsi:type="PrimaryCommandSurface">
<!--Use OfficeTab to extend an existing Tab. Use CustomTab to create a new tab -->
<!-- Documentation includes all the IDs currently tested to work -->
<CustomTab id="Contoso.Citations">
<!--Group. Ensure you provide a unique id. Recommendation for any IDs is to namespace using your companyname-->
<Group id="Contoso.Citations.Group1Id1">
<!--Label for your group. resid must point to a ShortString resource -->
<Label resid="residLabel4" />
<!--Icons. Required sizes 16,31,80, optional 20, 24, 40, 48, 64. Strongly recommended to provide all sizes for great UX -->
<!--Use PNG icons and remember that all URLs on the resources section must use HTTPS -->
<Icon>
<bt:Image size="16" resid="icon1_16x16" />
<bt:Image size="32" resid="icon1_32x32" />
<bt:Image size="80" resid="icon1_80x80" />
</Icon>
<!--Control. It can be of type "Button" or "Menu" -->
<Control xsi:type="Button" id="Button3Id1">
<!--Label for your button. resid must point to a ShortString resource -->
<Label resid="residLabel3" />
<Supertip>
<!--ToolTip title. resid must point to a ShortString resource -->
<Title resid="residLabel" />
<!--ToolTip description. resid must point to a LongString resource -->
<Description resid="residToolTip" />
</Supertip>
<Icon>
<bt:Image size="16" resid="icon1_16x16" />
<bt:Image size="32" resid="icon3_32x32" />
<bt:Image size="80" resid="icon1_80x80" />
</Icon>
<!--This is what happens when the command is triggered (E.g. click on the Ribbon). Supported actions are ExecuteFuncion or ShowTaskpane-->
<Action xsi:type="ShowTaskpane">
<!--Provide a url resource id for the location that will be displayed on the taskpane -->
<SourceLocation resid="residUnitConverterUrl" />
</Action>
</Control>
</Group>
<Label resid="residLabel4" />
</CustomTab>
</ExtensionPoint>
</DesktopFormFactor>
</Host>
</Hosts>
<Resources>
<bt:Images>
<bt:Image id="icon1_16x16" DefaultValue="https://i.imgur.com/xV3upTT.png">
<bt:Override Locale="ja-jp" Value="https://i.imgur.com/xV3upTT.png" />
</bt:Image>
<bt:Image id="icon1_32x32" DefaultValue="https://i.imgur.com/kBw0iKX.png">
<bt:Override Locale="ja-jp" Value="https://i.imgur.com/kBw0iKX.png" />
</bt:Image>
<bt:Image id="icon1_80x80" DefaultValue="https://i.imgur.com/xV3upTT.png">
<bt:Override Locale="ja-jp" Value="https://i.imgur.com/xV3upTT.png" />
</bt:Image>
<bt:Image id="icon2_32x32" DefaultValue="https://i.imgur.com/LltG56v.png">
</bt:Image>
<bt:Image id="icon3_32x32" DefaultValue="https://i.imgur.com/6WiJTG0.png">
</bt:Image>
</bt:Images>
<bt:Urls>
<bt:Url id="residUnitConverterUrl" DefaultValue="https://addinwithfabric.azurewebsites.net/index.html">
</bt:Url>
<!--LearnMore URL currently not used -->
<bt:Url id="Contoso.GetStarted.LearnMoreUrl" DefaultValue="https://odsample.azurewebsites.net/Pages/GetStarted.html">
</bt:Url>
</bt:Urls>
<bt:ShortStrings>
<bt:String id="residLabel" DefaultValue="Get Data">
<bt:Override Locale="ja-jp" Value="JA-JP Multiple Buttons" />
</bt:String>
<bt:String id="residLabel2" DefaultValue="Save Data">
<bt:Override Locale="ja-jp" Value="JA-JP Multiple Buttons" />
</bt:String>
<bt:String id="residLabel3" DefaultValue="Search Citation">
<bt:Override Locale="ja-jp" Value="JA-JP Multiple Buttons" />
</bt:String>
<bt:String id="residLabel4" DefaultValue="Web Citations">
<bt:Override Locale="ja-jp" Value="JA-JP Multiple Buttons" />
</bt:String>
<bt:String id="residLabel5" DefaultValue="Another Command">
<bt:Override Locale="ja-jp" Value="JA-JP Multiple Buttons" />
</bt:String>
<bt:String id="Contoso.GetStarted.Title" DefaultValue="Citation Sample Loaded Successfully">
<bt:Override Locale="ja-jp" Value="JA-JP Get Started Title" />
</bt:String>
</bt:ShortStrings>
<bt:LongStrings>
<bt:String id="residToolTip" DefaultValue="Multiple Buttons Tooltip">
<bt:Override Locale="ja-jp" Value="JA-JP Multiple Buttons Tooltip" />
</bt:String>
<bt:String id="Contoso.GetStarted.Description" DefaultValue="Get going by opening the REFERENCES tab on the Ribbon then click WEB CITATIONS>SEARCH CITATION button">
<bt:Override Locale="ja-jp" Value="JA-JP Get Started Title" />
</bt:String>
</bt:LongStrings>
</Resources>
</VersionOverrides>
</OfficeApp>
Copy the manifest to the share folder which you have configure as
“Trusted Catalog” for the Word.
Insert the apps for Office from the share folder, you are able to
see the new tab “Web Citations” on the
ribbon
please make sure to follow the documentation. The manifest you downloaded should not require any changes, just to test it make sure to follow the links below:
Add-In Commands intro http://dev.office.com/docs/add-ins/design/add-in-commands
Check out the samples: https://github.com/OfficeDev/Office-Add-in-Commands-Samples/blob/master/README.md
Test it using a network share: https://dev.office.com/docs/add-ins/publish/create-a-network-shared-folder-catalog-for-task-pane-and-content-add-ins
If you follow these documents you should be able to test. Please let me know if the information on those pages is not useful, or how to improve it!..
thanks!