<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Andrew Coates ::: MSFT</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/acoat/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/acoat/feed.xml</link>
    <description>It&amp;#039;s all about community!</description>
    <lastBuildDate>Tue, 16 Apr 2019 04:26:36 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Programmatically Creating and Signing Word Documents</title>
      <link>https://docs.microsoft.com/archive/blogs/acoat/programmatically-creating-and-signing-word-documents</link>
      <pubDate>Wed, 29 Nov 2017 02:43:01 GMT</pubDate>
      <dc:creator><![CDATA[Andrew Coates [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/acoat/?p=6035</guid>
      <description><![CDATA[I got asked by a customer how to generate and sign Word Documents programmatically. I couldn't find...]]></description>
      <content:encoded><![CDATA[<p>I got asked by a customer how to generate and sign Word Documents programmatically. I couldn't find a good example, so I wrote them one: <a href="https://github.com/coatsy/SignWordDoc">https://github.com/coatsy/SignWordDoc</a>.</p><p>In summary, the architecture looks like this:</p><p><img src="https://raw.githubusercontent.com/coatsy/SignWordDoc/master/images/Architecture.png"></p><p><br></p><p>Details are in the <a href="https://github.com/coatsy/SignWordDoc" target="_blank">Github Repo</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Digital Workplace Conference Sydney 23-24 August</title>
      <link>https://docs.microsoft.com/archive/blogs/acoat/digital-workplace-conference-sydney-23-24-august</link>
      <pubDate>Mon, 10 Jul 2017 01:15:23 GMT</pubDate>
      <dc:creator><![CDATA[Andrew Coates [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/acoat/?p=6025</guid>
      <description><![CDATA[I’m so looking forward to speaking at the Digital Workplace Conference in Sydney next month. Last...]]></description>
      <content:encoded><![CDATA[<p><a href="http://www.dwcau.com.au/" target="_blank"><img width="748" height="160" title="18612 STP Badges I'm speaking" alt="18612 STP Badges I'm speaking" src="https://msdnshared.blob.core.windows.net/media/2017/07/18612-STP-Badges-Im-speaking.png" border="0"></a></p><p>I’m so looking forward to speaking at the <a href="http://www.dwcau.com.au/">Digital Workplace Conference in Sydney</a> next month. Last time I spoke at this conference (when it was still the SharePoint Conference), I talked about building and creating documents with the OpenXML SDK and SharePoint2010 Word Automation Services. This ended up as one of my my most popular blog posts (<a href="https://blogs.msdn.microsoft.com/acoat/2010/06/19/document-creation-and-conversion-with-the-openxml-sdk-and-sharepoint-2010-word-automation-services-part-1/">part 1</a> and <a href="https://blogs.msdn.microsoft.com/acoat/2011/04/06/document-creation-and-conversion-with-the-openxml-sdk-and-sharepoint-2010-word-automation-services-part-2/">part 2</a>).</p><p>This year I’ll be talking about developing extensions for Office Client Applications with the new HTML-based app model.</p><p>Kudos to Debbie Ireland, Mark Rhodes and the team for putting together another stellar conference.</p><p><a href="https://www.regonline.com/DWCAU2017">Register Now</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>Build Tour Sydney Hack – Are you ready?</title>
      <link>https://docs.microsoft.com/archive/blogs/acoat/build-tour-sydney-hack-are-you-ready</link>
      <pubDate>Sun, 25 Jun 2017 23:03:53 GMT</pubDate>
      <dc:creator><![CDATA[Andrew Coates [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/acoat/?p=6005</guid>
      <description><![CDATA[I’m getting pretty excited about this week’s Build event coming to Sydney and I am particularly...]]></description>
      <content:encoded><![CDATA[<p>I’m getting pretty excited about this week’s Build event coming to Sydney and I am particularly looking forward to the Day 2 Hack on Friday 30 June.&nbsp; In order to ensure your time is maximised with hacking and coding, not installing software and tools, please make sure your machine has all the required tools before arriving on Day 2.&nbsp; <p>Use the <a href="http://aka.ms/hackcheck">Hack Checklist app</a> from the Windows Store to verify everything is installed and configured correctly. Not only does it check you’ve got the bits, it gives you links to install them if you don’t.<p><a href="https://msdnshared.blob.core.windows.net/media/2017/06/image545.png"><img width="966" height="706" title="image" style="border: 0px currentcolor" alt="image" src="https://msdnshared.blob.core.windows.net/media/2017/06/image_thumb518.png" border="0"></a><p>The Hack Checklist will check for the following requirements:<ul><li>Windows 10 Creators Update (build 15063 or later)<li>Visual Studio 2017 Update 2 (Community Edition or higher) with the following workloads <ul><li>Universal Windows Platform Development – version 15063<li>.NET Desktop Development<li>Mobile Development with .NET (including Android emulators)</li></ul><li>Developer mode enabled<li>Azure CLI 2.0<li>Azure Libraries for .NET<li>Docker for Windows</li></ul><p>Optionally, we recommend the following tools:<ul><li>Git<li>Unity 5.6 or higher<li>Visual Studio 2017 Update 3 Preview<li>VS Tools for Azure Functions</li></ul><p><a href="https://msdnshared.blob.core.windows.net/media/2017/06/image546.png"><img width="720" height="880" title="image" alt="image" src="https://msdnshared.blob.core.windows.net/media/2017/06/image_thumb519.png" border="0"></a><p>Microsoft will be providing access to power and free wired and wifi connectivity for all Hackathon participants<p>If you have got any questions or get stuck or any of the above, our team will be available on Build Day 1 (29 June) to help sort any issues, so just bring your laptop in and we’ll get your sorted.<p>If you haven’t signed up for the Build tour in Sydney, there are still a few seats available – register for:<ul><li><a href="https://buildtour.microsoft.com/">Both Day 1 and 2</a> (or day 1 on its own); or</li><li><a href="https://www.microsoftevents.com/profile/form/index.cfm?PKformID=0x2023064a5e8">Day 2 only</a></li></ul><p>See you there!]]></content:encoded>
    </item>
    <item>
      <title>Gotchas writing Tabs for Teams</title>
      <link>https://docs.microsoft.com/archive/blogs/acoat/gotchas-writing-tabs-for-teams</link>
      <pubDate>Tue, 21 Mar 2017 23:51:08 GMT</pubDate>
      <dc:creator><![CDATA[Andrew Coates [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/acoat/?p=5945</guid>
      <description><![CDATA[I had great fun last night presenting at the Sydney SharePoint User Group on an “Introduction to...]]></description>
      <content:encoded><![CDATA[<p>I had great fun last night presenting at the <a href="https://www.meetup.com/Sydney-Sharepoint-User-Group/">Sydney SharePoint User Group</a> on an “Introduction to Customising Microsoft Teams with Tabs and Bots” (thanks <a href="https://twitter.com/johnnliu">John</a> and <a href="https://twitter.com/IvanWilson">Ivan</a> for inviting me). I shamelessly stole the slides and code from <a href="https://twitter.com/mikeamm">Mike Ammerlaan</a>’s excellent VS2017 Launch video <a href="https://channel9.msdn.com/Events/Visual-Studio/Visual-Studio-2017-Launch/WEB-104">Create awesome bots, connectors and tabs in Microsoft Teams</a>.</p> <p>In my session I demo’d creating a Tab for teams, based on the <a href="https://github.com/OfficeDev/TrainingContent/blob/master/Teams/01%20Tabs/Lab.md">lab</a> in the <a href="https://github.com/OfficeDev/TrainingContent/tree/master/Teams">teams folder</a> in the <a href="https://github.com/OfficeDev/TrainingContent">OfficeDev Training Content github repo</a>. The lab’s based on the preview version, and since then Teams has gone to General Availability, so there are a few differences, most notably the mechanism for side-loading your tab (or bot) to test. There’s a <a href="https://msdn.microsoft.com/en-us/microsoft-teams/sideload">good doc on the new process</a> available on MSDN.</p> <p>By the way, the <a href="https://msdn.microsoft.com/en-us/microsoft-teams/index">documentation for Teams development</a> is excellent – well worth a look from start to finish.</p> <p>However, in addition to the new way of doing things, I cam across a couple of other non-intuitive hurdles that I think might cause others (including me, later) to stumble.</p> <p>There are two places I came across errors that proved difficult to debug:</p> <h2>Error uploading the manifest for the tab to teams</h2> <p><strong>This means there’s something wrong in the manifest file (or associated icons)</strong>.</p> <p>The manifest is a json file (<a href="https://msdn.microsoft.com/en-us/microsoft-teams/schema">schema reference here</a>). The instructions currently on GitHub require you to use version 0.2 of the schema, but the documentation is all for v0.4. This led to some issues with things like the length of the <code>name</code> property. <strong>v0.2 requires that the <code>name</code> property be no more than 16 characters</strong>, but I couldn’t find that documented anywhere. Fortunately, I was editing the manifest in VS Code, and it does json file schema validation. It alerted me to the place the error was happening with a green squiggly, so that made things easier to track down.</p> <p><a href="https://msdnshared.blob.core.windows.net/media/2017/03/image509.png"><img title="image" style="border-left-width: 0px;border-right-width: 0px;border-bottom-width: 0px;padding-top: 0px;padding-left: 0px;padding-right: 0px;border-top-width: 0px" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/2017/03/image_thumb485.png" width="341" height="87"></a></p> <p>To upload the manifest, you zip it up with a couple of icon files (44x44 and 88x88 pixels) and here’s where I ran into another gotcha. If you include the icon files (you can reference external URLs instead), <strong>they must each be less than 1.5kb in size</strong>. Turns out this is not so simple for an 88x88pixel image. I use <a href="https://www.syncfusion.com">Syncfusion</a>’s rather excellent (and free) <a href="https://www.syncfusion.com/downloads/metrostudio">Metro Studio</a> to create my icons, but I really had to tweak some parameters to get the size down.</p> <p>Any URLs in the manifest appear to be validated, not just checked that they’re a valid format, but actually hit to check that they exist. There were some placeholder URLs in the manifest when I originally uploaded it and I got a generic error. <strong>URLs in the manifest must be available when the the manifest is uploaded</strong>.</p> <p>Here’s the <code>manifest.json</code> file that ended up working for me.</p> <div id="scid:C89E2BDB-ADD3-4f7a-9810-1B7EACF446C1:14bf57d6-a7c1-4f93-a25e-b96445975860" class="wlWriterEditableSmartContent" style="float: none;padding-bottom: 0px;padding-top: 0px;padding-left: 0px;margin: 0px;padding-right: 0px"><pre>
[sourcecode language='text'  padlinenumbers='true' toolbar='false']
{
	"$schema": "https://statics.teams.microsoft.com/sdk/v0.2/manifest/MicrosoftTeams.schema.json",
	"manifestVersion": "0.2",
	"id": "net.coatsy.instrument-sharing",
	"version": "1.0",
	"name": "Instrument Share",
	"developer": {
		"name": "Coatsy",
		"websiteUrl": "https://instrument-sharing.azurewebsites.net/",
		"privacyUrl": "https://instrument-sharing.azurewebsites.net/privacy.html",
		"termsOfUseUrl": "https://instrument-sharing.azurewebsites.net/termsofuse.html"
	},
	"description": {
		"short": "Host instrument inventory and relevant items as a tab.",
		"full": "Work with instrument &amp; accessory inventory items as a tab."
	},
	"icons": {
		"44": "inv44.png",
		"88": "inv88.png"
	},
	"accentColor": "#223344",
	"configUrl": "https://instrument-sharing.azurewebsites.net/configuration.html",
	"canUpdateConfig": true,
	"needsIdentity": false,
	"validDomains": [
		"static2.sharepointonline.com",
		"secure.aadcdn.microsoftonline-p.com",
		"code.jquery.com",
		"statics.teams.microsoft.com",
		"*.microsoftonline.com"
	]
}
[/sourcecode]
</pre>
</div>
<p>&nbsp;</p>
<h2>Error adding the tab to a channel</h2>
<p><strong>This means there’s something wrong on the configuration page.</strong></p>
<p>Once the manifest’s been uploaded and validated, you need to add the new tab to a channel. Doing so displays the page specified in the manifest’s <code>configUrl</code> property. The configuration page allows you to collect any additional setting information and then save all of the configuration information for the tab with a javascript call back into the <code>MicrosoftTeams.js</code> library (<a href="https://msdn.microsoft.com/en-us/microsoft-teams/jslibrary">API reference for this library</a> is available on MSDN). 
<p>Once again, URLs in the configuration settings appear to be validated – they must be https and either be in the same domain as the settings page or from a domain whitelisted in the manifest’s <code>validDomains</code> list. 
<p>Here’s the <code>configuration.html</code> that ended up working for me.</p>
<div id="scid:C89E2BDB-ADD3-4f7a-9810-1B7EACF446C1:2e89a2d9-0208-406e-921e-cb02b13f1a42" class="wlWriterEditableSmartContent" style="float: none;padding-bottom: 0px;padding-top: 0px;padding-left: 0px;margin: 0px;padding-right: 0px"><pre>
[sourcecode language='html' ]



    
    <title></title>


    <script src="https://statics.teams.microsoft.com/sdk/v0.4/js/MicrosoftTeams.min.js"></script>
    <script type="text/javascript">
    microsoftTeams.initialize();
    microsoftTeams.settings.registerOnSaveHandler(function(saveEvent){
        microsoftTeams.settings.setSettings({
            entityId: "InstrumentSharing",
            contentUrl: "https://instrument-sharing.azurewebsites.net/index.html",
            suggestedDisplayName: "Instrument Sharing",
            websiteUrl: "https://instrument-sharing.azurewebsites.net"
        });
        saveEvent.notifySuccess();
    });
    microsoftTeams.settings.setValidityState(true);
    </script>


[/sourcecode]
</pre>
</div>
<p>&nbsp;</p>
<h2>More Troubleshooting Help</h2>
<p>There are more <a href="https://msdn.microsoft.com/en-us/microsoft-teams/troubleshooting">troubleshooting tips in the MSDN documentation</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>My top tips for a Successful Ignite Australia Session</title>
      <link>https://docs.microsoft.com/archive/blogs/acoat/my-top-tips-for-a-successful-ignite-australia-session</link>
      <pubDate>Tue, 04 Oct 2016 04:19:53 GMT</pubDate>
      <dc:creator><![CDATA[Andrew Coates [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/acoat/?p=5915</guid>
      <description><![CDATA[For four days in February (14-17), Microsoft Ignite Australia will bring together Developers and IT...]]></description>
      <content:encoded><![CDATA[<p>For four days in February (14-17), Microsoft Ignite Australia will bring together Developers and IT Pros to explore new ideas and build their knowledge.  <p><a href="https://msftignite.com.au/tracks">Tracks</a> this year will cover familiar themes such as Architecture, Cloud, .NET, Windows, Productivity and Datacentre and Infrastructure Management and we are also shaking things up and including sessions that cover new products and technologies such as Data &amp; Analytics and a dedicated Open Source track.  <p>We rely on the expertise and creativity of our speakers to make it a successful event and our Call for Content is now open, so <a href="https://msftignite.com.au/my-ignite/call-for-content">get those creative juices going and start submitting sessions now</a>. <p>As a track owner, I get to look through hundreds of submissions and it’s always a tough choice to narrow down the best of the best. I’ve put together my top tips that will help you with a successful submission. <ul> <li>Your content should focus on level 300/400 (technical to very technical) to ensure it aligns with the expectations of Ignite attendees.</li> <li>A short, catchy but descriptive session title to match content is a must</li> <li>Descriptions should be limited to 300 words and entice people to want to attend your session</li> <li>Be sure to showcase your speaking experience </li> <li>Build your presentations with 60-65 mins of content and allow 10-15 mins for Q&amp;A </li> <li>Ignite is about technical readiness so focus on the technology – attendees don’t want to hear marketing in your content </li></ul> <p>Submissions close on 15 October. Good luck! <p><a href="https://msftignite.com.au/my-ignite/call-for-content"><img title="MS Ignite Logo" style="border-top: 0px;border-right: 0px;border-bottom: 0px;padding-top: 0px;padding-left: 0px;border-left: 0px;padding-right: 0px" border="0" alt="MS Ignite Logo" src="https://msdnshared.blob.core.windows.net/media/2016/10/MSIgniteLaunch_BLOG_Squares_heading_960x540.jpg" width="964" height="544"></a>]]></content:encoded>
    </item>
    <item>
      <title>More Podcasting - this time for Office Developers</title>
      <link>https://docs.microsoft.com/archive/blogs/acoat/more-podcasting-this-time-for-office-developers</link>
      <pubDate>Fri, 24 Jun 2016 04:17:41 GMT</pubDate>
      <dc:creator><![CDATA[Andrew Coates [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/acoat/?p=5895</guid>
      <description><![CDATA[I recently joined Richard diZerega as the co-host of the Office Developer Podcast. It’s been an...]]></description>
      <content:encoded><![CDATA[<p><img src="https://blogs.office.com/wp-content/uploads/2016/06/Developer-Podcast-new-featured-image-3b.png"></p> <p>I recently joined Richard diZerega as the co-host of the Office Developer Podcast. It’s been an interesting time getting things set up. For a start, Richard’s based in Texas, I’m in Sydney and our guest (if we have one) is somewhere else. Finding a mutually convenient time is an issue. </p> <p>Next, recording remotely is a hassle too. Audio quality is a big issue if you’re trying to do things over Skype or some other VOIP connection, and connecting a real telephone to the computer to record is also non-trivial. We use <a href="https://zencastr.com/" target="_blank">Zencastr</a>, a web-based service that allows any number of people to connect to the service and sets up a VOIP link for all of you. You then just chat away. The cool bit is that the audio is recorded locally (so no VOIP artefacts) and each participant’s file (as MP3 and, optionally, WAV) is uploaded to the organiser’s Dropbox after the recording. There’s also an option to do some standard post-production work on the files automatically. Very Cool.</p> <p>I’ve done 3 episodes so far – have a listen and <a href="https://blogs.msdn.microsoft.com/acoat/contact/" target="_blank">let me know</a> what you think.</p> <ul> <li><a href="https://blogs.office.com/2016/06/09/episode-094-introducing-new-co-host-andrew-coates-office-365-developer-podcast/" target="_blank">Episode 094 introducing new co-host Andrew Coates</a></li> <li><a href="https://blogs.office.com/2016/06/16/episode-095-mat-velloso-on-bots-and-office-365-office-365-developer-podcast/" target="_blank">Episode 095 Mat Velloso on bots and Office 365</a></li> <li><a href="https://blogs.office.com/2016/06/23/episode-096-paul-stubbs-on-the-max-team-and-the-microsoft-graph-office-365-developer-podcast/" target="_blank">Episode 096 Paul Stubbs on the MAX team and the Microsoft Graph</a></li></ul>]]></content:encoded>
    </item>
    <item>
      <title>Aussie IT Folk – Upskill and maybe win an XBox</title>
      <link>https://docs.microsoft.com/archive/blogs/acoat/aussie-it-folk-upskill-and-maybe-win-an-xbox</link>
      <pubDate>Wed, 22 Jun 2016 00:57:39 GMT</pubDate>
      <dc:creator><![CDATA[Andrew Coates [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/acoat/?p=5885</guid>
      <description><![CDATA[Announcing the Knowledge Master Competition. Upskill your knowledge, and be in with a chance to win...]]></description>
      <content:encoded><![CDATA[<p>Announcing the <strong>Knowledge Master Competition</strong>. Upskill your knowledge, and be in with a chance to win an Xbox One. What could go wrong go wrong? <p>We are giving you a chance to win an Xbox One. All you have to do is… <ul> <li>Complete one of the following online MVA courses</li></ul> <ul> <ul> <li><a href="https://mva.microsoft.com/en-US/training-courses/devtest-in-the-cloud-16274?l=9aAijd7LC_2005190311">‘Dev/Test in the Cloud’</a> (total of 3 hours/4 modules to complete) <li><a href="https://mva.microsoft.com/en-US/training-courses/how-can-technology-help-grow-my-business-16255?">How can technology help grow my business?</a> (total of 25 minutes/1 module to complete) <li><a href="https://mva.microsoft.com/en-US/training-courses/building-blocks-devops-and-enterprise-development-16061?l=p0K70oWDC_4205632527">Building Blocks: DevOps and Enterprise Development</a> (total of 1 hour 47 mins to complete/3 modules) <li><a href="https://mva.microsoft.com/en-US/training-courses/power-tools-for-windows-10-16405?l=2xJ2DdeUC_506573942">Power Tools for Windows 10</a> (total of 3 hours/7 modules to complete)</li></ul></ul> <ul> <li>Take screenshot of your completed course <li>Pop you screenshot in an email and in 35 words or less tell us <strong>“How you will apply what you just learned”.</strong> Be smart, be imaginative, be funny. <li>Send email to <a href="mailto:ausdevs@microsoft.com">ausdevs@microsoft.com</a></li></ul> <p>Hurry, you have until 27th June to enter. Winner will be notified on 29th June.</p> <p>If you’re worried about the timeframes involved, have a good look at the time/modules to complete each course – remember you only need to complete one of the four courses.</p> <p>All the Ts &amp; Cs and other details are linked from the <a href="https://blogs.technet.microsoft.com/itproaustralia/2016/06/17/knowledge-master-competition-compete-to-win-an-xbox/" target="_blank">original post</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Excellent Xamarin session from dotnetConf</title>
      <link>https://docs.microsoft.com/archive/blogs/acoat/excellent-xamarin-session-from-dotnetconf</link>
      <pubDate>Wed, 15 Jun 2016 04:10:36 GMT</pubDate>
      <dc:creator><![CDATA[Andrew Coates [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/acoat/?p=5855</guid>
      <description><![CDATA[dotnetConf was a virtual event that ran June 7-9 and there were some great sessions.

One of...]]></description>
      <content:encoded><![CDATA[<a href="https://msdnshared.blob.core.windows.net/media/2016/06/dotnetConf.png"><img style="padding-top: 0px;padding-left: 0px;padding-right: 0px;border-width: 0px" title="dotnetConf" src="https://msdnshared.blob.core.windows.net/media/2016/06/dotnetConf_thumb.png" alt="dotnetConf" width="964" height="64" border="0" /></a>

<a href="https://channel9.msdn.com/Events/dotnetConf/2016" target="_blank">dotnetConf</a> was a virtual event that ran June 7-9 and there were some great sessions.

One of my favourites was James Motemamagno’s <a href="https://channel9.msdn.com/Events/dotnetConf/2016/iOS--Android-Development-for-the-C-Developer-with-Xamarin" target="_blank">iOS &amp; Android Development for the C# Developer with Xamarin</a>

Check it out

<iframe src="https://channel9.msdn.com/Events/dotnetConf/2016/iOS--Android-Development-for-the-C-Developer-with-Xamarin/player" width="960" height="540" frameborder="0" allowfullscreen="allowfullscreen"></iframe>

&nbsp;

PS if you’d like one of those cool Xamarin Monkeys, <a href="https://blogs.msdn.microsoft.com/acoat/contact/" target="_blank">drop me a note</a> with a shipping address and I’ll send you one*

<hr />

* While stocks last]]></content:encoded>
    </item>
    <item>
      <title>Re-displaying the Consent Dialog in Graph Explorer</title>
      <link>https://docs.microsoft.com/archive/blogs/acoat/re-displaying-the-consent-dialog-in-graph-explorer</link>
      <pubDate>Sun, 29 May 2016 04:17:47 GMT</pubDate>
      <dc:creator><![CDATA[Andrew Coates [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/acoat/?p=5825</guid>
      <description><![CDATA[I was trying to follow along with Richard diZerega’s excellent tutorial on using the Excel REST Api...]]></description>
      <content:encoded><![CDATA[<p>I was trying to follow along with <a href="https://blogs.msdn.microsoft.com/richard_dizeregas_blog/" target="_blank">Richard diZerega</a>’s excellent tutorial on using the Excel REST Api in the Microsoft Graph (<a href="https://channel9.msdn.com/Shows/Office-Dev-Show/Office-Dev-Show-Episode-28-Microsoft-Graph-and-Excel-APIs" target="_blank">Episode 28</a> of the <a href="https://channel9.msdn.com/Shows/Office-Dev-Show" target="_blank">Office Dev Show</a>). As he demonstrated, I was using the Graph Explorer and was able to find my workbook by GETting</p><pre>https://graph.microsoft.com/beta/me/drive/root/children?$select=name,id</pre>
<p>And then get a reference to the workbook I wanted to use by GETting</p><pre>https://graph.microsoft.com/beta/me/drive/items/[the id I found]/workbook</pre>
<p>I could even find out what was in cells A1:C1 on Sheet1 of the workbook by GETting</p><pre>https://graph.microsoft.com/beta/me/drive/items/[the id I found]/workbook/worksheets('Sheet1')/range(address='Sheet1!A1:C1')</pre>
<p>BUT, when I tried to set the values in that range by PATCHing</p><pre>https://graph.microsoft.com/beta/me/drive/items/[the id I found]/workbook/worksheets('Sheet1')/range(address='Sheet1!A1:C1')</pre>
<p>and passing</p><pre>{ "values" : [["First Name","Last Name","Company"]] }</pre>
<p>in the body, I got the following cryptic error:</p><pre>{
    "error": {
        "code": "EditModeAccessDenied",
        "message": "",
        "innerError": {
            "request-id": "6610f3fe-93d5-42b1-8687-0f53dce1e25c",
            "date": "2016-05-24T05:36:04"
        }
    }
}</pre>
<p>Which is pretty wierd, because I can quite happily edit the workbook in Excel online and even via other apps using the Graph.</p>
<p>It turns out that the problem was that I'd consented to the Graph Explorer application back in the days when it was a GET only interface, so I needed to pop up the common consent dialog again with the new permissions it needed for doing POST and PATCH (and DELETE)</p>
<p>Unfortunately, there didn't seem to be an easy way to do this (at least I couldn't find one). Then my mate Chad Brooks suggested that I needed to add the</p><pre>promt=consent</pre>
<p>parameter to the auth dialog page.</p>
<p>I re-launched the Graph Explorer and clicked the Sign In link. At the next page (the login page), I manually edited the URL to add the parameter and re-loaded. I logged in as normal and lo! I was presented with the common consent dialog. Now when I PATCH that range I get a much more sensible answer:</p><pre>{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#worksheet",
    "@odata.type": "#microsoft.graph.range",
    "@odata.id": "/users('516bd36d-a7e4-48b5-b6f7-f909133a9b8e')/drive/items('01BDIUI7YEHLXXPQG52ZBLRSWBSQX3DWEW')/workbook/worksheets(%27%7B00000000-0001-0000-0000-000000000000%7D%27)/range(address=%27Sheet1!A1:C1%27)",
    "address": "Sheet1!A1:C1",
    "addressLocal": "Sheet1!A1:C1",
    "cellCount": 3,
    "columnCount": 3,
    "columnHidden": false,
    "columnIndex": 0,
    "formulas": [
        [
            "First Name",
            "Last Name",
            "Company"
        ]
    ],
    "formulasLocal": [
        [
            "First Name",
            "Last Name",
            "Company"
        ]
    ],
    "formulasR1C1": [
        [
            "First Name",
            "Last Name",
            "Company"
        ]
    ],
    "hidden": false,
    "numberFormat": [
        [
            "General",
            "General",
            "General"
        ]
    ],
    "rowCount": 1,
    "rowHidden": false,
    "rowIndex": 0,
    "text": [
        [
            "First Name",
            "Last Name",
            "Company"
        ]
    ],
    "values": [
        [
            "First Name",
            "Last Name",
            "Company"
        ]
    ],
    "valueTypes": [
        [
            "String",
            "String",
            "String"
        ]
    ]
}</pre>
<p>All's right with the world once more.</p>]]></content:encoded>
    </item>
    <item>
      <title>//build/ is coming to Melbourne 26 May</title>
      <link>https://docs.microsoft.com/archive/blogs/acoat/build-is-coming-to-melbourne-26-may</link>
      <pubDate>Wed, 04 May 2016 23:07:38 GMT</pubDate>
      <dc:creator><![CDATA[Andrew Coates [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/acoat/?p=5806</guid>
      <description><![CDATA[Well, some of it at least. Join us for this free one-day event with some of Microsoft’s top...]]></description>
      <content:encoded><![CDATA[<p><a href="https://melbourne.build2016.com/register" target="_blank"><img title="//build/ Melbourne logo" style="border-top: 0px;border-right: 0px;border-bottom: 0px;float: none;padding-top: 0px;padding-left: 0px;margin-left: auto;border-left: 0px;padding-right: 0px;margin-right: auto" border="0" alt="//build/ Melbourne logo" src="https://msdnshared.blob.core.windows.net/media/2016/05/image222.png" width="640" height="116"></a></p> <p>Well, some of it at least.</p> <p>Join us for this free one-day event with some of Microsoft’s top presenters on Thursday May 26th in Melbourne.</p> <p>While the keynote will cover much of the build content, the remainder of the day will focus on the Windows Developer experience with Hands-on Labs and in-depth presentations. The day will conclude with the popular Q&amp;A panel pioneered at last year’s //build/ Sydney.</p> <p>Due to the Hands-on Labs component, places are extremely limited, so <a href="https://melbourne.build2016.com/register">Sign Up Today</a>.</p> <p>&nbsp;</p> <p>#buildmelb]]></content:encoded>
    </item>
  </channel>
</rss>