<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[SPO Dev]]></title><description><![CDATA[SharePoint Online, Microsoft 365, Power Platform]]></description><link>https://spodev.com/</link><image><url>https://spodev.com/favicon.png</url><title>SPO Dev</title><link>https://spodev.com/</link></image><generator>Ghost 5.2</generator><lastBuildDate>Sun, 05 Apr 2026 02:15:07 GMT</lastBuildDate><atom:link href="https://spodev.com/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[Microsoft 365 Virtual Marathon 2021]]></title><description><![CDATA[Join the free community event from April 26-28 2021 for community hosted sessions!]]></description><link>https://spodev.com/microsoft-365-virtual-marthon-2021/</link><guid isPermaLink="false">6086e6997ded600508eb7a10</guid><category><![CDATA[SharePoint Online]]></category><category><![CDATA[Microsoft 365]]></category><category><![CDATA[Microsoft Teams]]></category><category><![CDATA[Power Apps]]></category><category><![CDATA[Power Automate]]></category><dc:creator><![CDATA[Zach Roberts]]></dc:creator><pubDate>Mon, 26 Apr 2021 16:17:53 GMT</pubDate><media:content url="https://spodev.com/content/images/2021/04/BpaIYI7IkE.png" medium="image"/><content:encoded><![CDATA[<img src="https://spodev.com/content/images/2021/04/BpaIYI7IkE.png" alt="Microsoft 365 Virtual Marathon 2021"><p>Running from April 26 - April 28 the community is hosting sessions for Microsoft 365 - SharePoint, PowerApps, Power Bi, Power Automate, Teams - you name it! Register and check out the link below to join the session! This is a free event and great way to learn for other community experts and sessions from Microsoft &#x1F60A;</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://www.m365virtualmarathon.com/"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Microsoft 365 Virtual Marathon</div><div class="kg-bookmark-description">Microsoft 365 Virtual Marathon is a free online, 36 hour event happening May 27-28 2020 with sessions going the whole time with speakers from around the globe.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://www.m365virtualmarathon.com/images/logo180x180.png" alt="Microsoft 365 Virtual Marathon 2021"></div></div><div class="kg-bookmark-thumbnail"><img src="https://www.m365virtualmarathon.com/images/M365GVC-VM2021-EN-Website.png" alt="Microsoft 365 Virtual Marathon 2021"></div></a></figure>]]></content:encoded></item><item><title><![CDATA[Global Navigation for SharePoint Intranets - Coming EOY 2020]]></title><description><![CDATA[Learn about the new SharePoint app bar features coming at the end of 2020, the app bar will bring global navigation across all sites in your SharePoint tenant.]]></description><link>https://spodev.com/global-navigation-for-sharepoint-intranets-coming-eoy-2020/</link><guid isPermaLink="false">5f80fea8bd611308f150fce2</guid><category><![CDATA[SharePoint Online]]></category><category><![CDATA[Intranet]]></category><dc:creator><![CDATA[Zach Roberts]]></dc:creator><pubDate>Sat, 10 Oct 2020 00:29:49 GMT</pubDate><media:content url="https://spodev.com/content/images/2020/10/sharepointappbar-globalnav-100859916-large-1.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://spodev.com/content/images/2020/10/sharepointappbar-globalnav-100859916-large-1.jpg" alt="Global Navigation for SharePoint Intranets - Coming EOY 2020"><p>If you missed Ignite 2020 you would of missed a very exciting annoucement of the SharePoint App Bar coming to SharePoint Online at the end of this year. The app bar will bring global navigation across all of your sites and will use the navigation that is setup from your <a href="https://spodev.com/sharepoint-home-sites/">SharePoint home site</a>. </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://spodev.com/content/images/2020/10/sharepointappbar-globalnav-100859916-large.jpg" class="kg-image" alt="Global Navigation for SharePoint Intranets - Coming EOY 2020" loading="lazy"><figcaption>SharePoint App Bar brings global navigation across your SharePoint tenant.</figcaption></figure><p>The app bar will not only feature a link back to your home site but links to your recent and followed sites, news from your sites and recommended sites. I would highly reccomend checking out the video that goes more in depth about this feature at this link: <a href="https://techcommunity.microsoft.com/t5/video-hub/architecting-your-intelligent-intranet-with-sharepoint-global/m-p/1681225">https://techcommunity.microsoft.com/t5/video-hub/architecting-your-intelligent-intranet-with-sharepoint-global/m-p/1681225</a></p>]]></content:encoded></item><item><title><![CDATA[Disable Welcome Email for Microsoft 365 Groups]]></title><description><![CDATA[In this post find out how to disable the automatic welcome to the group email when adding new members to Microsoft 365 groups.]]></description><link>https://spodev.com/disable-welcome-email-for-microsoft-365-groups/</link><guid isPermaLink="false">5f04be59bd60cc12c91eb607</guid><category><![CDATA[Office 365]]></category><category><![CDATA[SharePoint]]></category><category><![CDATA[PowerShell]]></category><category><![CDATA[Microsoft 365]]></category><dc:creator><![CDATA[Zach Roberts]]></dc:creator><pubDate>Wed, 08 Jul 2020 19:19:49 GMT</pubDate><media:content url="https://spodev.com/content/images/2020/07/GroupWelcome.png" medium="image"/><content:encoded><![CDATA[<img src="https://spodev.com/content/images/2020/07/GroupWelcome.png" alt="Disable Welcome Email for Microsoft 365 Groups"><p>You may have noticed that when setting up a new 365 group it will send out a welcome email to every member you add, sometimes this is nice but what if you want to prevent this email from being sent out? Maybe you are still setting up the group or you want to send 1 email to everyone that will be apart of the group to give them a better introduction to the group and it&apos;s purpose. </p><p>In this post I will walk through the steps to disable this default welcome email.</p><h3 id="prerequisites-">Prerequisites:</h3><ul><li>Microsoft Exchange Online PowerShell Module</li></ul><h3 id="installing-microsoft-exchange-online-powershell-module">Installing Microsoft Exchange Online PowerShell Module</h3><ul><li>If you already have this installed you can skip this step.</li></ul><!--kg-card-begin: markdown--><ol>
<li>Launch PowerShell as an administator</li>
<li>Set your execution policy to RemoteSigned using the below command:<br>
<code>Set-ExecutionPolicy RemoteSigned</code></li>
<li>Run the below command to install the PowerShellGet module:<br>
<code>Install-Module PowerShellGet -Force</code></li>
<li>Close and reopen PoweShell as administrator and run the below command to install the ExchangeOnlineManagement module:<br>
<code>Install-Module ExchangeOnlineManagement</code></li>
<li>Run the below command to connect to Exchange Online - you should be prompted to sign in with your Microsoft 365 email and password:<br>
<code>Connect-ExchangeOnline</code></li>
</ol>
<p>Congrats! You should now have the Microsoft Exchange Online PowerShell Module installed &#x1F60A;</p>
<!--kg-card-end: markdown--><h3 id="disabling-the-welcome-email">Disabling the welcome email</h3><!--kg-card-begin: markdown--><ol>
<li>Launch PowerShell and run the below command:<br>
<code>Connect-ExchangeOnline</code></li>
<li>After signing in and the module has loaded run the below command against the group you want to disable the welcome email for:<br>
<code>Set-UnifiedGroup -Identity &quot;ExampleGroup@spodev.com&quot; -UnifiedGroupWelcomeMessageEnable:$false</code></li>
</ol>
<p>After the command completes you have now successfully disabled the welcome email for the Microsoft 365 group!</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Change Home page of SharePoint Online Site with PowerShell]]></title><description><![CDATA[Learn how to change the default home page of your SharePoint Online site to the document library or page of your choice.]]></description><link>https://spodev.com/change-home-page-sharepoint-site/</link><guid isPermaLink="false">5ec93c4fbd60cc12c91eb58a</guid><category><![CDATA[SharePoint Online]]></category><category><![CDATA[PowerShell]]></category><category><![CDATA[PnP]]></category><category><![CDATA[Office 365]]></category><dc:creator><![CDATA[Zach Roberts]]></dc:creator><pubDate>Sat, 23 May 2020 15:44:18 GMT</pubDate><media:content url="https://spodev.com/content/images/2020/05/PnPPowerShell-1.png" medium="image"/><content:encoded><![CDATA[<img src="https://spodev.com/content/images/2020/05/PnPPowerShell-1.png" alt="Change Home page of SharePoint Online Site with PowerShell"><p>In this post I will describe how to change the default home page in a SharePoint Online site user PowerShell.</p><h2 id="requirements">Requirements</h2><ul><li>SharePoint &#xA0;PnP PowerShell Cmdlets installed - <a href="https://github.com/pnp/PnP-PowerShell">Can find installation here</a></li></ul><figure class="kg-card kg-image-card"><img src="https://spodev.com/content/images/2020/05/sppnp-1.png" class="kg-image" alt="Change Home page of SharePoint Online Site with PowerShell" loading="lazy"></figure><h2 id="lets-get-started">Lets Get Started</h2><p>Knowing this command may be helpful if you want to change the default home page of a SharePoint site to the document library, list or a different page you setup on the site. In this example I will be changing the site to use the document library as the home page. </p><p>I will get requests from users for a SharePoint site that is going to be used majorly as a place to store and collaborate on documents, setting up the document web part on the home page is useful but it lacks some features that are in the full document library page and changing out the home page for the document library page solves these issues.</p><ol><li>Run the below command to connect to the SharePoint site you want to change.</li></ol><!--kg-card-begin: markdown--><pre><code class="language-PowerShell">Connect-PnPOnline -Url https://YOURTENANT.sharepoint.com/YOURSITEPATH -UseWebLogin
</code></pre>
<!--kg-card-end: markdown--><p>2. Once connected to the site run the below command to set the document library as the new home page for your site.</p><pre><code class="language-PowerShell">Set-PnPHomePage -RootFolderRelativeUrl &apos;Shared Documents/Forms/AllItems.aspx&apos;</code></pre><p>Now you should be all set, refreshing the page on your SharePoint site and the document library should be your new home page.</p><p>For more reading about the cmdlet used follow the link below &#x1F60A;</p><p>Link: <a href="https://docs.microsoft.com/en-us/powershell/module/sharepoint-pnp/set-pnphomepage?view=sharepoint-ps">Set-PnPHomePage cmdlet</a></p>]]></content:encoded></item><item><title><![CDATA[SharePoint Home Sites]]></title><description><![CDATA[Setup a home site for your SharePoint online infrastructure]]></description><link>https://spodev.com/sharepoint-home-sites/</link><guid isPermaLink="false">5e065f9f5cf43f0507cbee23</guid><category><![CDATA[SharePoint]]></category><dc:creator><![CDATA[Zach Roberts]]></dc:creator><pubDate>Fri, 27 Dec 2019 20:05:13 GMT</pubDate><content:encoded><![CDATA[<p>Home Sites were announced during the 2019 SharePoint conference in May. Home sites provide a landing page experience for your organization. The home site not only acts as a landing page for your organization but provides search across your SharePoint infrastructure.</p><p>The SharePoint start page will be updated to match the branding on your home site and will provide a similar navigation experience for your users. </p><h2 id="how-to-setup-a-home-site">How to setup a Home Site</h2><p>Prerequisites:</p><ul><li>A communication site that is enabled as a hub site.</li><li><a href="https://www.microsoft.com/en-gb/download/details.aspx?id=35588">SharePoint Online Management Shell </a></li></ul><ol><li>Launch PowerShell as an admin and enter the command below to connect to your Microsoft 365 tenant. </li></ol><pre><code>Connect-SPOService -Url https://mytenant-admin.sharepoint.com</code></pre><p>2. Running the cmdlet below to set up your home site.</p><pre><code>Set-SPOHomeSite -HomeSiteUrl &lt;enter site url&gt;</code></pre><p>Your home site is now being setup, navigation and changes to the start page can take up to 24 hours to complete. Currently setting up the home site can only be accomplished through PowerShell but it is going to be added as a feature apart of the new SharePoint Online Admin center.</p>]]></content:encoded></item><item><title><![CDATA[Microsoft Edge: New Tab Office 365]]></title><description><![CDATA[Microsoft's edge browser has tie ins to Office 365 and allows you to sign in with your organizational account to show relevant information on new tab pages.]]></description><link>https://spodev.com/microsoft-edge/</link><guid isPermaLink="false">5dbe0359a1ec2c0fcec81210</guid><category><![CDATA[Office 365]]></category><category><![CDATA[SharePoint]]></category><dc:creator><![CDATA[Zach Roberts]]></dc:creator><pubDate>Sat, 02 Nov 2019 22:45:31 GMT</pubDate><media:content url="https://spodev.com/content/images/2019/11/microsoftedgenewlogo.png" medium="image"/><content:encoded><![CDATA[<img src="https://spodev.com/content/images/2019/11/microsoftedgenewlogo.png" alt="Microsoft Edge: New Tab Office 365"><p>Microsoft has been working on revamping their Microsoft Edge browser based on the Chromium engine. It has come a very long way and they have just recently announced the new logo! At the time of writing this article the edge browser is still in beta.</p><p>A feature they recently have released is you can sign into your organization in the browser, this will sync your history, favorites and other browser settings across multiple devices additionally you can have the options to on a new tab show relevant information about your organization, files you recently worked on and SharePoint sites you are following or recently visited. </p><p>How to:</p><ol><li>If you don&apos;t have it already go ahead and download the new edge browser! You can choose from the multiple preview builds of the browser <a href="https://www.microsoftedgeinsider.com/en-us/">here</a>.</li><li>When you launch the browser select the user profile icon in the top right corner and select sign in.</li></ol><p>3. &#xA0;Sign in with your Work or School account</p><figure class="kg-card kg-image-card"><img src="https://spodev.com/content/images/2019/11/Edge2.png" class="kg-image" alt="Microsoft Edge: New Tab Office 365" loading="lazy"></figure><p>4. After logging in you will be signed into the browser, go ahead and open a new tab, &#xA0;select the gear in the upper right hand corner and then change the setting to &apos;Office 365&apos;</p><figure class="kg-card kg-image-card"><img src="https://spodev.com/content/images/2019/11/Edge3-1.png" class="kg-image" alt="Microsoft Edge: New Tab Office 365" loading="lazy"></figure><p>The tab will refresh and start to load information from Office 365. This may be a very nice setting for your users and give them another option of working in SharePoint or Office 365.</p>]]></content:encoded></item><item><title><![CDATA[My Office 365 Groups Web Part - Update!]]></title><description><![CDATA[I created a web part that will gather the current users Office 365 groups and display a list to the user with links to them.]]></description><link>https://spodev.com/my-365-groups-webpart/</link><guid isPermaLink="false">5db33672a1ec2c0fcec811b0</guid><category><![CDATA[SharePoint]]></category><category><![CDATA[Office 365]]></category><category><![CDATA[SharePoint Framework]]></category><category><![CDATA[React]]></category><category><![CDATA[Adaptive Cards]]></category><dc:creator><![CDATA[Zach Roberts]]></dc:creator><pubDate>Sat, 02 Nov 2019 12:20:17 GMT</pubDate><media:content url="https://spodev.com/content/images/2019/11/react_my_group_example.png" medium="image"/><content:encoded><![CDATA[<img src="https://spodev.com/content/images/2019/11/react_my_group_example.png" alt="My Office 365 Groups Web Part - Update!"><p>I recently created a web part for SharePoint Online that retrieves the current user&apos;s Office 365 Groups and generates a list with thumbnails and links to that group&apos;s SharePoint page. </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://spodev.com/content/images/2019/11/react_my_group_example-1.png" class="kg-image" alt="My Office 365 Groups Web Part - Update!" loading="lazy"><figcaption>Example Image</figcaption></figure><p>I have submitted this web part to the SharePoint repo on GitHub and it was accepted! Feel free to check it out: <a href="https://github.com/SharePoint/sp-dev-fx-webparts/tree/master/samples/react-my-groups">React-My-Groups</a></p><p>Update: I participated in a community demo on 11/21/19. You can find the video at the link below, in the video you will find the latest updates for SPFX and two other awesome web parts that were demoed.</p><p><a href="https://developer.microsoft.com/en-us/office/blogs/sharepoint-framework-community-call-recording-21st-of-november-2019/">SharePoint Framework Community Call - Nov 21st 2019</a></p><p>I will be posting a series on the development of this web part so stay tuned! This series is almost ready and will be posted soon!</p><p></p><h3></h3>]]></content:encoded></item><item><title><![CDATA[How To: SharePoint Site Swap]]></title><description><![CDATA[<p>New PowerShell cmdlet that is rolling out to organizations now and is expected to be rolled out globally by the end of October 2019. This cmdlet will allow SharePoint admins to swap the root url of their SharePoint site with a different site. In this how to we are going</p>]]></description><link>https://spodev.com/create-a-sharepoint-home-site/</link><guid isPermaLink="false">5d7eaa27a1ec2c0fcec8114e</guid><category><![CDATA[SharePoint]]></category><category><![CDATA[PowerShell]]></category><dc:creator><![CDATA[Zach Roberts]]></dc:creator><pubDate>Sun, 15 Sep 2019 21:43:09 GMT</pubDate><content:encoded><![CDATA[<p>New PowerShell cmdlet that is rolling out to organizations now and is expected to be rolled out globally by the end of October 2019. This cmdlet will allow SharePoint admins to swap the root url of their SharePoint site with a different site. In this how to we are going to swap a site to the root url of SharePoint Online.</p><h3 id="requirements-">Requirements:</h3><ul><li><a href="https://www.microsoft.com/en-us/download/details.aspx?id=35588">SharePoint Admin PowerShell</a> 16.0.8812.100 or later</li></ul><p></p><ol><li>Open PowerShell and connect to your tenant</li></ol><pre><code>Connect-SPOService -Url https://YOURTENANT-admin.sharepoint.com</code></pre><p>We need to run the Invoke-SPOSiteSwap cmdlet with the below parameters.</p><ul><li>SourceUrl: Location of the site you want move. (Must exist before)</li><li>TargetUrl: Location where you want your site to go. (Must exist before)</li><li>ArchiveUrl: Location where the site currently at the targetUrl will move to. (Must NOT exist before)</li></ul><p>2. Run the command!</p><pre><code>Invoke-SPOSiteSwap -SourceUrl https://devroberts.sharepoint.com/sites/test1 -TargetUrl https://devroberts.sharepoint.com -ArchiveUrl https://devroberts.sharepoint.com/sites/Archive</code></pre><p>If the command ran successfully the root of your SharePoint site will now be your source site!</p>]]></content:encoded></item><item><title><![CDATA[Flow and Adaptive Cards - Sending an Outlook Actionable Message - Post 2]]></title><description><![CDATA[Finish the series to send an adaptive card to your users and receive a response back.]]></description><link>https://spodev.com/flow-and-adaptive-cards-post-2/</link><guid isPermaLink="false">5d7e47bfa1ec2c0fcec810db</guid><category><![CDATA[Adaptive Cards]]></category><category><![CDATA[JSON]]></category><category><![CDATA[Power Automate]]></category><category><![CDATA[Outlook]]></category><category><![CDATA[SharePoint]]></category><dc:creator><![CDATA[Zach Roberts]]></dc:creator><pubDate>Sun, 15 Sep 2019 14:58:29 GMT</pubDate><media:content url="https://spodev.com/content/images/2019/09/AdaptiveCards2-1.png" medium="image"/><content:encoded><![CDATA[<img src="https://spodev.com/content/images/2019/09/AdaptiveCards2-1.png" alt="Flow and Adaptive Cards - Sending an Outlook Actionable Message - Post 2"><p>In the <a href="https://spodev.com/flow-and-adaptive-cards-post-1/">first post</a> we discussed how to create an actionable message and send that to a user through outlook using Flow. I am now going to demonstrate on how to receive the response from the user and take action on it in Flow.</p><h2 id="edit-your-card">Edit your card</h2><p>We need to wire up the Action.HTTP in our card to make&apos;Submit Response&apos; button do something, if you used my JSON from the previous example you only need to add the URL to send the response to. To get this URL we need to make another flow to capture the response.</p><p>Head over to Microsoft Flow and create a new flow.</p><ol><li>Add the &apos;When a HTTP request is received&apos; trigger.</li><li>In the trigger card select &apos;Use sample payload to generate schema&apos; and enter in a sample of the JSON data we are expecting to get when the card is submitted. After clicking done the sample data is used to fill out the body JSON.</li></ol><pre><code>{
	&quot;response&quot;: &quot;text&quot;,
	&quot;suggestionID&quot;: 3
}</code></pre><p>3. Add create SharePoint List Item step to your flow and set that up to insert an item with the ID and response received from the user. </p><p>4. Save your flow and copy the URL that is generated. You need to paste this URL into JSON card that gets sent to your user. </p><pre><code>&lt;script type=&quot;application/adaptivecard+json&quot;&gt;

{
    &quot;type&quot;: &quot;AdaptiveCard&quot;,
    &quot;body&quot;: [
        {
            &quot;type&quot;: &quot;TextBlock&quot;,
            &quot;size&quot;: &quot;Medium&quot;,
            &quot;weight&quot;: &quot;Bolder&quot;,
            &quot;text&quot;: &quot;Additional Feedback Required&quot;
        },
        {
            &quot;type&quot;: &quot;TextBlock&quot;,
            &quot;text&quot;: &quot;&quot;,
            &quot;wrap&quot;: true
        },
        {
            &quot;type&quot;: &quot;FactSet&quot;,
            &quot;facts&quot;: [
                {
                    &quot;title&quot;: &quot;Suggestion ID:&quot;,
                    &quot;value&quot;: &quot;&quot;
                },
                {
                    &quot;title&quot;: &quot;Respond By:&quot;,
                    &quot;value&quot;: &quot;&quot;
                }
            ]
        },
        {
            &quot;type&quot;: &quot;Input.Text&quot;,
            &quot;placeholder&quot;: &quot;Response&quot;,
            &quot;id&quot;: &quot;responseText&quot;,
            &quot;isMultiline&quot;: true,
            &quot;separator&quot;: true
        }
    ],
    &quot;$schema&quot;: &quot;http://adaptivecards.io/schemas/adaptive-card.json&quot;,
    &quot;version&quot;: &quot;1.0&quot;,
    &quot;actions&quot;: [
        {
            &quot;type&quot;: &quot;Action.Http&quot;,
            &quot;title&quot;: &quot;Submit Response&quot;,
            &quot;method&quot;: &quot;POST&quot;,
            &quot;id&quot;: &quot;submit&quot;,
            &quot;url&quot;: &quot;&quot;,
            &quot;body&quot;: &quot;{\&quot;response\&quot;:\&quot;{{responseText.value}}\&quot;,\&quot;suggestionID\&quot;:@{triggerBody()?[&apos;suggestionID&apos;]}}&quot;,
            &quot;headers&quot;: [
                {
                    &quot;name&quot;: &quot;Authorization&quot;,
                    &quot;value&quot;: &quot;&quot;
                },
                {
                    &quot;name&quot;: &quot;Content-type&quot;,
                    &quot;value&quot;: &quot;application/json&quot;
                }
            ]
        }
    ]
}
&lt;/script&gt;</code></pre><p>5. Head back to the new flow you made and you need to add a compose step to create the card that is sent back to your user. Below is a simple card saying &apos;your response has been received&apos;</p><pre><code>{
  &quot;type&quot;: &quot;AdaptiveCard&quot;,
  &quot;body&quot;: [
    {
      &quot;type&quot;: &quot;TextBlock&quot;,
      &quot;size&quot;: &quot;Medium&quot;,
      &quot;weight&quot;: &quot;Bolder&quot;,
      &quot;text&quot;: &quot;Thank you for your feedback!&quot;
    },
    {
      &quot;type&quot;: &quot;TextBlock&quot;,
      &quot;text&quot;: &quot;Your response has been submitted successfully!&quot;
    }
  ],
  &quot;$schema&quot;: &quot;http://adaptivecards.io/schemas/adaptive-card.json&quot;,
  &quot;version&quot;: &quot;1.0&quot;
}</code></pre><p>6. After the compose step add a response step here we will send a status code back to the submitter and updated the card. The step should look like below using the output from the previous compose step as the body.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://spodev.com/content/images/2019/09/AdaptiveCards4.png" class="kg-image" alt="Flow and Adaptive Cards - Sending an Outlook Actionable Message - Post 2" loading="lazy"><figcaption>Response Card</figcaption></figure><h2 id="test-it-out-">Test it out!</h2><p>Alright you should have a functioning card that your users can submit a response, save it to a SharePoint list and update the user that the response has been received. You can do a number of neat things with this functionality!</p>]]></content:encoded></item><item><title><![CDATA[Flow and Adaptive Cards - Sending an Outlook Actionable Message - Post 1]]></title><description><![CDATA[<p>Hello in this series I am going to go over a solution to help you create flows to send an actionable message to outlook, we will go over how to create and send the card in this post. In the 2nd post of this series we will discuss how to</p>]]></description><link>https://spodev.com/flow-and-adaptive-cards-post-1/</link><guid isPermaLink="false">5d59c66ea1ec2c0fcec81058</guid><category><![CDATA[Power Automate]]></category><category><![CDATA[Adaptive Cards]]></category><category><![CDATA[Outlook]]></category><category><![CDATA[JSON]]></category><dc:creator><![CDATA[Zach Roberts]]></dc:creator><pubDate>Mon, 02 Sep 2019 12:38:18 GMT</pubDate><media:content url="https://spodev.com/content/images/2019/09/AdaptiveCards1.png" medium="image"/><content:encoded><![CDATA[<img src="https://spodev.com/content/images/2019/09/AdaptiveCards1.png" alt="Flow and Adaptive Cards - Sending an Outlook Actionable Message - Post 1"><p>Hello in this series I am going to go over a solution to help you create flows to send an actionable message to outlook, we will go over how to create and send the card in this post. In the 2nd post of this series we will discuss how to receive feedback from the user and update them with a response.</p><!--kg-card-begin: markdown--><h1 id="whatareadaptivecards">What are Adaptive Cards?</h1>
<p>Microsoft has some great documentation on <a href="https://adaptive.io">adaptive cards</a> at their site please check it out and we will touch base on the designer they provide to help streamline the process of creating an adaptive card.</p>
<!--kg-card-end: markdown--><!--kg-card-begin: markdown--><h2 id="letscreateourcard">Lets create our card!</h2>
<p>Head over to the <a href="https://adaptivecards.io/designer/">adaptive cards designer</a>.<br>
Once at the designer you should see an example already loaded for you. We are going to change the host app to &apos;Outlook Actionable Messages&apos;</p>
<p><img src="https://spodev.com/content/images/2019/08/AdaptiveCards1.png" alt="Flow and Adaptive Cards - Sending an Outlook Actionable Message - Post 1" loading="lazy"></p>
<p>I am going to click the New Card option to start with a blank card you can do so as well or edit the the sample card to your liking. The designer will output the adaptive card in JSON below the card - this is what you will need to send your card. If you would like to you can copy the JSON below to see the card I created for this demo post.</p>
<pre><code class="language-javascript">&lt;script type=&quot;application/adaptivecard+json&quot;&gt;

{
    &quot;type&quot;: &quot;AdaptiveCard&quot;,
    &quot;body&quot;: [
        {
            &quot;type&quot;: &quot;TextBlock&quot;,
            &quot;size&quot;: &quot;Medium&quot;,
            &quot;weight&quot;: &quot;Bolder&quot;,
            &quot;text&quot;: &quot;Additional Feedback Required&quot;
        },
        {
            &quot;type&quot;: &quot;TextBlock&quot;,
            &quot;text&quot;: &quot;@{triggerBody()?[&apos;additionalInfo&apos;]}&quot;,
            &quot;wrap&quot;: true
        },
        {
            &quot;type&quot;: &quot;FactSet&quot;,
            &quot;facts&quot;: [
                {
                    &quot;title&quot;: &quot;Suggestion ID:&quot;,
                    &quot;value&quot;: &quot;VARIABLE_HERE&quot;
                },
                {
                    &quot;title&quot;: &quot;Respond By:&quot;,
                    &quot;value&quot;: &quot;VARIABLE_HERE&quot;
                }
            ]
        },
        {
            &quot;type&quot;: &quot;Input.Text&quot;,
            &quot;placeholder&quot;: &quot;Response&quot;,
            &quot;id&quot;: &quot;responseText&quot;,
            &quot;isMultiline&quot;: true,
            &quot;separator&quot;: true
        }
    ],
    &quot;$schema&quot;: &quot;http://adaptivecards.io/schemas/adaptive-card.json&quot;,
    &quot;version&quot;: &quot;1.0&quot;,
    &quot;actions&quot;: [
        {
            &quot;type&quot;: &quot;Action.Http&quot;,
            &quot;title&quot;: &quot;Submit Response&quot;,
            &quot;method&quot;: &quot;POST&quot;,
            &quot;id&quot;: &quot;submit&quot;,
            &quot;url&quot;: &quot;&quot;,
            &quot;body&quot;: &quot;{\&quot;response\&quot;:\&quot;{{responseText.value}}\&quot;,\&quot;suggestionID\&quot;:@{triggerBody()?[&apos;suggestionID&apos;]}}&quot;,
            &quot;headers&quot;: [
                {
                    &quot;name&quot;: &quot;Authorization&quot;,
                    &quot;value&quot;: &quot;&quot;
                },
                {
                    &quot;name&quot;: &quot;Content-type&quot;,
                    &quot;value&quot;: &quot;application/json&quot;
                }
            ]
        }
    ]
}
&lt;/script&gt;
</code></pre>
<h2 id="createtheflow">Create the Flow</h2>
<p>With the adaptive card ready we can create a simple flow to send an email to a user in which they will receive the adaptive card.</p>
<p>I am creating a 2 step flow that is triggered by the button card and the user triggering the flow will have a text box to fill out that will provide context of what they are requesting. The flow will then send an email using the Outlook send an email step.</p>
<p>You will need to expand the &apos;Advanced Options&apos; on the outlook step and change is HTML to Yes. You can then paste your JSON for the adaptive card into the body of the email. Once that is done lets test our flow.</p>
<p>You should receive an email like below or what your card looks like.</p>
<p><img src="https://spodev.com/content/images/2019/09/AdaptiveCards2.png" alt="Flow and Adaptive Cards - Sending an Outlook Actionable Message - Post 1" loading="lazy"></p>
<p>In the second post I will go over how to handle the response to save it to a SharePoint list and then even update the card on the user&apos;s end when they hit submit.</p>
<p><a href="https://spodev.com/flow-and-adaptive-cards-post-2/">Second Post</a></p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Populate a SharePoint Online list using PowerShell]]></title><description><![CDATA[Learn how to populate a SharePoint Online list using PowerShell and PnP Tools]]></description><link>https://spodev.com/populate-a-sharepoint-online-list-using-power-shell/</link><guid isPermaLink="false">5ccedb3aa1ec2c0fcec80fcf</guid><category><![CDATA[SharePoint]]></category><category><![CDATA[PowerShell]]></category><category><![CDATA[PnP]]></category><dc:creator><![CDATA[Zach Roberts]]></dc:creator><pubDate>Mon, 06 May 2019 22:41:01 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>Lets take a CSV file and use that to populate an Online SharePoint List using Powershell with the PnP Powershell tools. Follow the steps below to get started.</p>
<!--kg-card-end: markdown--><hr><p>If you don&apos;t have them installed you will need to install the PnP PowerShell Tools for SharePoint. You can install them easily enough by launching PowerShell as an admin and running the below command.</p><p><code>Install-Module SharePointPnPPowerShellOnline</code></p><p>You can read more about PnP SharePoint Cmdlets <a href="https://docs.microsoft.com/en-us/powershell/sharepoint/sharepoint-pnp/sharepoint-pnp-cmdlets?view=sharepoint-ps">here</a>.</p><hr><!--kg-card-begin: markdown--><h2 id="1setupyoursharepointlistandcolumns">1. Setup your SharePoint List and columns</h2>
<p>You will need to have your SharePoint list and the columns that you want to populate with data in place. I recommend not using spaces in the names of your columns because when you are entering the columns in PowerShell you have to use the internal name of the column in SharePoint. You can always change the display name of the column later in SharePoint.</p>
<!--kg-card-end: markdown--><!--kg-card-begin: markdown--><h2 id="2getyourdataready">2. Get your data ready</h2>
<p>It is very easy to work with CSVs and PowerShell I will be using a small CSV file that contains a few items and using a few lines of PowerShell we will iterate through the items in the CSV and add them to the SharePoint List</p>
<!--kg-card-end: markdown--><figure class="kg-card kg-image-card"><img src="https://spodev.com/content/images/2019/05/image-33.png" class="kg-image" alt loading="lazy"></figure><!--kg-card-begin: markdown--><h2 id="3powershell">3. PowerShell</h2>
<!--kg-card-end: markdown--><p>Now that we are all setup we can launch PowerShell and run through the commands below to update our SharePoint list.</p><ol><li>Path to the location of your CSV file and import it to a variable using the below command.</li></ol><p>	<code>$items = import-csv .\[nameofyour].csv</code></p><p>(Replace the [] and text inside with your filename)</p><p>	Now that the items are imported into the PowerShell variable you can enter <code>$items</code> in PowerShell and get a result like below depending on your CSV file.</p><figure class="kg-card kg-image-card"><img src="https://spodev.com/content/images/2019/05/image-34.png" class="kg-image" alt loading="lazy"></figure><p>2. We need to run the command below to connect our PowerShell session to SharePoint Online. You will need the URL to point to a site where the list you want to populate lives. After running the below command you will be prompted for credentials to connect to the site. </p><p><code>connect-PnPOnline -url https://[yoursite].sharepoint.com/[site]</code></p><p>3. Once you are successfully connect you can run the below command to view all the lists in the site you are connected to.</p><p><code>Get-PnPList</code></p><p>4. &#xA0;Run the command below to start the import into your SharePoint List</p><!--kg-card-begin: html--><script src="https://gist.github.com/zachroberts8668/50d4839cd14848062a6f778da3f042c9.js"></script><!--kg-card-end: html--><p>And that is all there is to it, but that is only scratching the surface of what the PnP tools and PowerShell can do for you in SharePoint Online. </p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://spodev.com/content/images/2019/05/image-35.png" class="kg-image" alt loading="lazy"></figure>]]></content:encoded></item><item><title><![CDATA[Task Reminders - Microsoft Flow and SharePoint List]]></title><description><![CDATA[<p>In this article I needed to get a daily task reminder sent to a number of users, these users would have multiple tasks that would get created in a SharePoint list, using Microsoft Flow we can iterate through the list and send each user a personalized reminder on their tasks.</p>]]></description><link>https://spodev.com/task-reminders-microsoft-flow-and-sharepoint/</link><guid isPermaLink="false">5ccd72bda1ec2c0fcec80e7b</guid><category><![CDATA[Power Automate]]></category><category><![CDATA[SharePoint]]></category><dc:creator><![CDATA[Zach Roberts]]></dc:creator><pubDate>Sat, 04 May 2019 13:31:33 GMT</pubDate><content:encoded><![CDATA[<p>In this article I needed to get a daily task reminder sent to a number of users, these users would have multiple tasks that would get created in a SharePoint list, using Microsoft Flow we can iterate through the list and send each user a personalized reminder on their tasks.</p><p>First order of business is to create a Task List in a SharePoint Online site. &#xA0;</p><!--kg-card-begin: markdown--><ol>
<li>In the upper right hand corner of your SharePoint site click the &#x2699; and then click <strong>Site Contents</strong>.</li>
<li>On the Site Contents page select <strong>New &gt; List</strong>.</li>
<li>Give your list a name and click create.</li>
</ol>
<!--kg-card-end: markdown--><p>OK now that we have our list set up lets add some columns to the list.</p><p>	Add the following columns to your list with the respective type:</p><!--kg-card-begin: markdown--><ul>
<li>
<pre><code>**Description** - Single Line of Text
</code></pre>
</li>
<li>
<pre><code>**Assigned To** - Person (Allow Multiple Selections)
</code></pre>
</li>
<li>
<pre><code>**Start Date**  - Date/Time
</code></pre>
</li>
<li>
<pre><code>**End Date**    - Date/Time
</code></pre>
</li>
<li>
<pre><code>**Is Complete?**- Yes/No
</code></pre>
</li>
</ul>
<!--kg-card-end: markdown--><p>Awesome now that we have the list setup lets start working on the flow. In your SharePoint List select the <strong>Flow</strong> button and select <strong>Create a flow </strong>and in the pane that opens up select<strong> See your Flows</strong>. </p><p>In Microsoft flow lets create a blank flow - we will attach this to a schedule so it can run whenever you want to the alerts to be sent. </p><figure class="kg-card kg-image-card"><img src="https://spodev.com/content/images/2019/05/image-10.png" class="kg-image" alt loading="lazy"></figure><p>In the window that opens give your flow a cool name and set your schedule and click create to get this show on the road. After your flow is created you should see the following screen below.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://spodev.com/content/images/2019/05/image-13.png" class="kg-image" alt loading="lazy"></figure><p>Add the Get Items (SharePoint) step to your flow and connect it to your SharePoint site and list.</p><figure class="kg-card kg-image-card"><img src="https://spodev.com/content/images/2019/05/image-14.png" class="kg-image" alt loading="lazy"></figure><p>After we get our list items we need to setup some variables in our flow. Add the Initialize Variable step like below.</p><figure class="kg-card kg-image-card"><img src="https://spodev.com/content/images/2019/05/image-15.png" class="kg-image" alt loading="lazy"></figure><p>Now that we have a variable that will be an array we are going to use that to store all of the email addresses for each user in our set, before we can setup up our other variables lets add an <strong>Apply to Each</strong> step.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://spodev.com/content/images/2019/05/image-16.png" class="kg-image" alt loading="lazy"></figure><p>Use the output from your get list items step and add the Append to array variable step to your apply to each step setting the value to the expression on the right.</p><p><code>first(item()?[&apos;AssignedTo&apos;])?[&apos;Email&apos;]</code></p><p>Next add initialize another email array like below with the following expression</p><figure class="kg-card kg-image-card"><img src="https://spodev.com/content/images/2019/05/image-19.png" class="kg-image" alt loading="lazy"></figure><p><code>union(variables(&apos;EmailArray&apos;),variables(&apos;EmailArray&apos;))</code></p><p>The above step creates an array of email addresses to send to and to gather the tasks for, this will allow us to iterate over this array until we reach the end and only send 1 email to your users. </p><p>Add a <strong>Do Until</strong> step and select advanced editor and enter the expression in the image below.</p><figure class="kg-card kg-image-card"><img src="https://spodev.com/content/images/2019/05/image-20.png" class="kg-image" alt loading="lazy"></figure><p>Adding on to our <strong>Do Until </strong>step add the following steps. </p><figure class="kg-card kg-image-card"><img src="https://spodev.com/content/images/2019/05/image-31.png" class="kg-image" alt loading="lazy"></figure><p>Expressions for <strong>Filter Array 2</strong></p><p><code>first(item()?[&apos;AssignedTo&apos;])?[&apos;Email&apos;]</code> </p><p><code>first(variables(&apos;Emails&apos;))</code></p><p>In the first filter we are filtering our get items step so that we are only grabbing items that are not complete, we are then filtering our filter items for ones that are assigned to the current user the email array is iterating through, we wouldn&apos;t want to send someone tasks that weren&apos;t theirs.</p><p>Continuing on our <strong>Do Until</strong> step add the following Select step and switch to text mode. Set the value to the Body from the 2nd filter array.</p><figure class="kg-card kg-image-card"><img src="https://spodev.com/content/images/2019/05/image-24.png" class="kg-image" alt loading="lazy"></figure><figure class="kg-card kg-image-card"><img src="https://spodev.com/content/images/2019/05/image-23.png" class="kg-image" alt loading="lazy"></figure><p>Here we are starting to format our data, in this guide I will provide you with some HTML and CSS to send a nicely formatted email but we need to create table items here. Between the <code>td</code> tags you can add your columns from your task list using the following expression replacing the string with the correct column name.</p><p><code>item()[&apos;Title&apos;]</code></p><p>From the output of the Select lets use the Join step to well join them together</p><figure class="kg-card kg-image-card"><img src="https://spodev.com/content/images/2019/05/image-25.png" class="kg-image" alt loading="lazy"></figure><p>Add the following condition to your steps to check if the filter array 2 is empty</p><figure class="kg-card kg-image-card"><img src="https://spodev.com/content/images/2019/05/image-26.png" class="kg-image" alt loading="lazy"></figure><p>You need to set the expression equal to true, they removed the advanced editor for conditions.</p><p>Expression used <code>empty(body(&apos;Filter_array_2&apos;))</code> and use a true expression on the right.</p><p>If our items are not empty we are going to send an email to the user containing their tasks, in the <strong>If no</strong> section add the <strong>Send an Email </strong>step.</p><p>Set the <strong>To </strong>field to <code>first(variables(&apos;Emails&apos;))</code></p><p>Set the subject to whatever you would like.</p><p>For the body you can use the HTML below</p><!--kg-card-begin: html--><script src="https://gist.github.com/zachroberts8668/77c79ad019730371b338fcd3232b5ba2.js"></script><!--kg-card-end: html--><p>Add the output from your join into the HTML body of the email</p><figure class="kg-card kg-image-card"><img src="https://spodev.com/content/images/2019/05/image-27.png" class="kg-image" alt loading="lazy"></figure><p>In the advanced options of the Send To step set Is HTML to Yes or the email will not render the HTML.</p><figure class="kg-card kg-image-card"><img src="https://spodev.com/content/images/2019/05/image-28.png" class="kg-image" alt loading="lazy"></figure><p>Finally add the last 2 steps</p><p>The Compose step will move to the next item in the array and then you will update the array to the output from the composed step, all of these steps will repeat until the array is empty.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://spodev.com/content/images/2019/05/image-30.png" class="kg-image" alt loading="lazy"></figure><p>Save your flow and add some tasks to your list and then click the test button and trigger your flow manually then look for your awesome email in your inbox.</p><figure class="kg-card kg-image-card kg-width-full"><img src="https://spodev.com/content/images/2019/05/image-32.png" class="kg-image" alt loading="lazy"></figure><p>There is a forum I would like to point out which helped me along when I was first working on this task and that is the power platform &#xA0;community a great resource. When I first stumbled across this and so did a few other users there was a bug in the setup that would send an email for every task I found the solution and shared it to that forum post and wanted to post an overall setup guide for this solution here &#x1F60A;</p><p>Link to this item in the <a href="https://powerusers.microsoft.com/t5/General-Flow-Discussion/microsoft-flow-get-all-items-with-distinct-Assigned-to-User-and/m-p/172081#M17024">forum</a> - message 13 is where I have the solution in place.</p>]]></content:encoded></item><item><title><![CDATA[Creating a simple webpart]]></title><description><![CDATA[In this guide I will walk you through the development of a very simple web part, we will delve into the details but not get too deep where we lose our minds, lets get to work!]]></description><link>https://spodev.com/creating-a-simple-webpart/</link><guid isPermaLink="false">5cccbeb5a1ec2c0fcec80d42</guid><category><![CDATA[SharePoint]]></category><category><![CDATA[WebPart]]></category><category><![CDATA[React]]></category><dc:creator><![CDATA[Zach Roberts]]></dc:creator><pubDate>Sat, 04 May 2019 00:13:39 GMT</pubDate><media:content url="https://spodev.com/content/images/2019/05/yeoman-1.png" medium="image"/><content:encoded><![CDATA[<img src="https://spodev.com/content/images/2019/05/yeoman-1.png" alt="Creating a simple webpart"><p>In this post I am going to walk you through creating a simple webpart for SharePoint Online. This webpart that we will be creating will calculate sales tax of an item, not super exctiting but it is an easy first intro into setting up a webpart and getting an overview of React in SharePoint webparts. </p><p>If you don&apos;t have your development environment setup yet no worries just open the link below in a new tab and follow the steps in that guide and you will be ready to rock in no time. If you are all set lets get the show on the road!</p><!--kg-card-begin: markdown--><h2 id="1scaffoldthewebpart">1. Scaffold the WebPart</h2>
<!--kg-card-end: markdown--><p>Open your console window of choice - I will be using <a href="https://hyper.is/">Hyper</a>, and enter the commands below. </p><p>Create your project directory and change your consoles location to that directory. </p><!--kg-card-begin: markdown--><p><code>mkdir tax-webpart</code><br>
<code>cd tax-webpart</code></p>
<!--kg-card-end: markdown--><!--kg-card-begin: markdown--><p>Enter <code>yo @microsoft/sharepoint</code> to start the yeoman generator.</p>
<!--kg-card-end: markdown--><figure class="kg-card kg-image-card"><img src="https://spodev.com/content/images/2019/05/yeoman.png" class="kg-image" alt="Creating a simple webpart" loading="lazy"></figure><!--kg-card-begin: markdown--><p>Respond to prompts like below</p>
<ol>
<li>Enter for the first prompt.</li>
<li>SharePoint Online Only.</li>
<li>Use the current folder.</li>
<li>N</li>
<li>N</li>
<li>WebPart</li>
<li>Enter &apos;Tax&apos; as the name for your webpart.</li>
<li>Enter to accept the default description.</li>
<li>React Framework.</li>
</ol>
<p>The yeoman generator will begin structure your project, this can take a few minutes depending on your internet connection.</p>
<!--kg-card-end: markdown--><p>When finished you will see the below result in your console window.</p><figure class="kg-card kg-image-card"><img src="https://spodev.com/content/images/2019/05/yeoman-complete.png" class="kg-image" alt="Creating a simple webpart" loading="lazy"></figure><!--kg-card-begin: markdown--><p>Enter the following command if you have VS Code installed to open your project in VS Code.<br>
<code>Code .</code></p>
<p>Also while in your console run the following command <code>gulp serve</code> to start a local instance of your webpart where you can test and preview your development. Your default browser will open to the webpage.</p>
<p>*NOTE you will need to run <code>gulp trust-dev-cert</code> before running <code>gulp serve</code>. This only needs to be done one time.</p>
<!--kg-card-end: markdown--><p>After your browser has launched with the SharePoint Workbench you can add the WebPart we initalized like below!</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://spodev.com/content/images/2019/05/addWebpart.gif" class="kg-image" alt="Creating a simple webpart" loading="lazy"></figure><p>This is the default webpart that is created every time you start a new webpart. It has one property attached to it where you can edit the webparts description. You can do this by clicking on the &#x1F58A; next to the webpart to open the property pane. The property pane is where you can setup your webpart settings and allow your users to change the settings of a webpart with out changing the code. If you edit the text inside the &apos;description&apos; field it will update as you type!</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://spodev.com/content/images/2019/05/VCYrVgFQaY.png" class="kg-image" alt="Creating a simple webpart" loading="lazy"></figure><p>Its not much right now but lets dig a litter deeper and get this web part to calculate some sales tax for us....woot!</p><!--kg-card-begin: markdown--><h2 id="2letscode">2. Lets Code!</h2>
<p>Ok the moment we&apos;ve all been waiting for lets get our hand&apos;s dirty and start to code this webpart. Open your code editor and open the file below.<br>
<code>src/webparts/TaxWebPart.ts</code></p>
<!--kg-card-end: markdown--><p>First lets get rid of the &apos;description&apos; field and add a field for the WebParts title and a field to set the percent for the sales tax.</p><p>At the top of this file you will do the following changes replacing <code>descrdescription: string;</code> and <code>description: this.properties.description</code></p><figure class="kg-card kg-image-card"><img src="https://spodev.com/content/images/2019/05/Code_31LgSiVkDX.png" class="kg-image" alt="Creating a simple webpart" loading="lazy"></figure><p>In the top section of this edit we are creating an interface for this webpart and declaring the type of these properties, since webparts are created using TypeScript (<a href="https://www.typescriptlang.org/">Check it out here!</a>) the types must be declared.</p><p>We also need to remove the description reference in <code>src/webparts/components/ITaxProps.ts</code> and add in the title and taxPercentage property. </p><figure class="kg-card kg-image-card"><img src="https://spodev.com/content/images/2019/05/image.png" class="kg-image" alt="Creating a simple webpart" loading="lazy"></figure><p>Finally we need to update the <code>TaxWebPart.manifest.json</code> file located in <code>src/weparts/</code></p><figure class="kg-card kg-image-card"><img src="https://spodev.com/content/images/2019/05/image-1.png" class="kg-image" alt="Creating a simple webpart" loading="lazy"></figure><p>Yes that is right you will need to update 3 locations when adding a new property to your webpart, it might seem like a lot but you will likely only add properties a few times during the development of your project. </p><p>Ok so lets add these properties to the property pane. Back to <code>src/webparts/TaxWebPart.ts</code> and the bottom of the file make the below changes.</p><figure class="kg-card kg-image-card"><img src="https://spodev.com/content/images/2019/05/image-2.png" class="kg-image" alt="Creating a simple webpart" loading="lazy"></figure><p>Ok so we now have our property fields setup but before we can go ahead and view them in the workbench lets make the following updates to our webpart.</p><p><code>src/webparts/components/Tax.tsx</code></p><figure class="kg-card kg-image-card"><img src="https://spodev.com/content/images/2019/05/image-4.png" class="kg-image" alt="Creating a simple webpart" loading="lazy"></figure><p>Now if you go to the workbench you will see the following. You can also open the property pane and enter text into the fields and see them update on the webpart. </p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://spodev.com/content/images/2019/05/image-7.png" class="kg-image" alt="Creating a simple webpart" loading="lazy"></figure><p>Neat! Ok lets do some math....yay!</p><p>Lets add the following code to our <code>Tax.tsx</code> file.</p><figure class="kg-card kg-image-card"><img src="https://spodev.com/content/images/2019/05/image-8.png" class="kg-image" alt="Creating a simple webpart" loading="lazy"></figure><figure class="kg-card kg-image-card"><img src="https://spodev.com/content/images/2019/05/image-9.png" class="kg-image" alt="Creating a simple webpart" loading="lazy"></figure><p>After making the above changes you have now made a webpart that can calculate the total and sales tax of an item! So cool &#x1F61D;!! </p><p>Next steps would be styling this webpart and making it even more reactive where a user wouldn&apos;t have to click on the calculate button for the math to run. Lets tackle that in a part 2!</p><p>Download the finished code from GitHub <a href="https://github.com/zachroberts8668/SPODev-tax-webpart">https://github.com/zachroberts8668/SPODev-tax-webpart</a></p>]]></content:encoded></item><item><title><![CDATA[Development Environment Setup]]></title><description><![CDATA[In this post I am going to walk you through the steps to get your computer ready to start developing for SharePoint Online.]]></description><link>https://spodev.com/development-environment-setup/</link><guid isPermaLink="false">5cc360c0a1ec2c0fcec80ce5</guid><category><![CDATA[SharePoint]]></category><category><![CDATA[VS Code]]></category><dc:creator><![CDATA[Zach Roberts]]></dc:creator><pubDate>Fri, 26 Apr 2019 23:22:09 GMT</pubDate><media:content url="https://spodev.com/content/images/2019/04/vscodeLogo-1.png" medium="image"/><content:encoded><![CDATA[<img src="https://spodev.com/content/images/2019/04/vscodeLogo-1.png" alt="Development Environment Setup"><p>In this post I am going to walk you through the steps to get your computer ready to start developing for SharePoint Online.</p><!--kg-card-begin: markdown--><ul>
<li>Install Visual Studio Code (<em>Or your favorite text editor</em>)</li>
<li>Install NPM</li>
<li>Install SharePoint Generator</li>
</ul>
<!--kg-card-end: markdown--><hr><!--kg-card-begin: markdown--><h2 id="installvisualstudiocode">Install Visual Studio Code</h2>
<!--kg-card-end: markdown--><figure class="kg-card kg-image-card"><img src="https://spodev.com/content/images/2019/04/vscodeLogo.png" class="kg-image" alt="Development Environment Setup" loading="lazy"></figure><p>Visual Studio Code or VS Code as many people refer to it (and how I will in the rest of this post or any future posts &#x1F60A;) is a new code editing software from Microsoft. I highly recommend using VS Code when working with SharePoint projects because alot of the dependecies are already built into the editor. You can however use any of your favorite text editors.</p><p><a href="https://code.visualstudio.com/download">Download Visual Studio Code</a> - it can be installed on Windows, Mac and Linux</p><p>After installing VS Code I recomend familiarzring yourself with it. The Microsoft documents are a great place to start. <a href="https://code.visualstudio.com/docs">VS Code Getting Started</a></p><hr><!--kg-card-begin: markdown--><h2 id="installingnpm">Installing NPM</h2>
<!--kg-card-end: markdown--><p>If you don&apos;t have Node installed use the following link below to install Node. Node will install NPM (Node Package Manager) to your computer which will use to scaffold projects and install supporting packages.</p><p><a href="https://nodejs.org/en/">Download Node</a> - Be sure to install the LTS version.</p><!--kg-card-begin: markdown--><h2 id="installsharepointgenerator">Install SharePoint Generator</h2>
<!--kg-card-end: markdown--><p>The SharePoint Generator is the tool that you will use to kick off all of your SharePoint Online projects. This will scaffold your project so you can start coding in it right away.</p><p>Launch PowerShell and run the following command</p><!--kg-card-begin: markdown--><p><code>npm install -g @microsoft/generator-sharepoint</code></p>
<!--kg-card-end: markdown--><p>After the install you are now ready to start developing SharePoint Online solutions! </p>]]></content:encoded></item></channel></rss>