{"id":6042,"date":"2021-03-04T14:59:37","date_gmt":"2021-03-04T22:59:37","guid":{"rendered":"https:\/\/officedevblogs.wpengine.com\/?p=6042"},"modified":"2021-03-04T14:59:37","modified_gmt":"2021-03-04T22:59:37","slug":"sheetgo-excel-add-in","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/sheetgo-excel-add-in\/","title":{"rendered":"Office Add-ins partner Sheetgo integrates Excel&#8217;s extensibility features"},"content":{"rendered":"<p><img decoding=\"async\" class=\"size-full wp-image-6051 alignnone\" src=\"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2021\/03\/jonathan-gomes-headshot-96px.png\" alt=\"Jonathan Gomes headshot\" width=\"100\" height=\"97\" srcset=\"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2021\/03\/jonathan-gomes-headshot-96px.png 100w, https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2021\/03\/jonathan-gomes-headshot-96px-24x24.png 24w, https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2021\/03\/jonathan-gomes-headshot-96px-48x48.png 48w\" sizes=\"(max-width: 100px) 100vw, 100px\" \/><\/p>\n<p>Jonathan Gomes\nHead of Product at Sheetgo | <a href=\"https:\/\/www.linkedin.com\/in\/jjonatann\">LinkedIn<\/a>\nBalne\u00e1rio de Cambori\u00fa, Santa Catarina, Brazil<\/p>\n<p><span data-contrast=\"auto\">Sheetgo is a no-code automation tool made with Excel add-ins that enables users to build their own business process management systems \u2014 all from a spreadsheet. It allows users to:<\/span><\/p>\n<ul>\n<li data-leveltext=\"\u25cf\" data-font=\"Arial, Arial_MSFontService, sans-serif\" data-listid=\"2\" data-aria-posinset=\"1\" data-aria-level=\"1\"><span data-contrast=\"auto\">Connect online Excel and CSV files<\/span><span data-contrast=\"auto\">,<\/span><span data-contrast=\"auto\">\u00a0and automate data transfer between them<\/span><\/li>\n<li data-leveltext=\"\u25cf\" data-font=\"Arial, Arial_MSFontService, sans-serif\" data-listid=\"2\" data-aria-posinset=\"2\" data-aria-level=\"1\"><span data-contrast=\"auto\">Create custom workflows\u00a0<\/span><span data-contrast=\"auto\">to combine, distribute and send filtered data to multiple files<\/span><\/li>\n<li data-leveltext=\"\u25cf\" data-font=\"Arial, Arial_MSFontService, sans-serif\" data-listid=\"2\" data-aria-posinset=\"3\" data-aria-level=\"1\"><span data-contrast=\"auto\">Automate data management<\/span><span data-contrast=\"auto\"> and reporting<\/span><\/li>\n<li data-leveltext=\"\u25cf\" data-font=\"Arial, Arial_MSFontService, sans-serif\" data-listid=\"2\" data-aria-posinset=\"3\" data-aria-level=\"1\"><span data-contrast=\"auto\">Share data while controlling access\u00a0<\/span><span data-contrast=\"auto\">and privacy<\/span><\/li>\n<li data-leveltext=\"\u25cf\" data-font=\"Arial, Arial_MSFontService, sans-serif\" data-listid=\"2\" data-aria-posinset=\"3\" data-aria-level=\"1\"><span data-contrast=\"auto\">Collaborate productively in the cloud and encourage SharePoint adoption amo<\/span><span data-contrast=\"auto\">ng the team<\/span><\/li>\n<\/ul>\n<h3>Why we build on the Office Add-ins platform<\/h3>\n<p><a href=\"https:\/\/appsource.microsoft.com\/en\/product\/office\/WA200002128\"><span data-contrast=\"none\">Sheetgo\u2019s<\/span><\/a><span data-contrast=\"none\"> web-based application allows Microsoft users to connect Excel spreadsheets stored in OneDrive and SharePoint to build custom, automated workflows. We wanted to make these functions even m<\/span><span data-contrast=\"none\">ore accessible by bringing them directly to where people\u00a0<\/span><span data-contrast=\"none\">work<\/span><span data-contrast=\"none\">:\u00a0<\/span><span data-contrast=\"none\">inside a spreadsheet. The Office Add-ins platform helped us to integrate<\/span><span data-contrast=\"none\">\u00a0<\/span><span data-contrast=\"none\">Sheetgo<\/span><span data-contrast=\"none\">\u00a0into Excel, enabling Microsoft users to connect and automate without leaving the spreadsheet\u00a0<\/span><span data-contrast=\"none\">they are<\/span><span data-contrast=\"none\">\u00a0working in.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:200,&quot;335559740&quot;:360}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"none\">Wh<\/span><span data-contrast=\"none\">ile the\u00a0<\/span><span data-contrast=\"none\">Sheetgo<\/span><span data-contrast=\"none\">\u00a0<\/span><span data-contrast=\"none\">web app offers a comprehensive platform for managing entire workflows, the add-in puts no-code automation right at the fingertips of every Excel user, allowing them to add or update connections without affecting productivity or\u00a0<\/span><span data-contrast=\"none\">int<\/span><span data-contrast=\"none\">e<\/span><span data-contrast=\"none\">rrupting the<\/span><span data-contrast=\"none\">\u00a0natural flow of\u00a0<\/span><span data-contrast=\"none\">their work.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559740&quot;:360}\">\u00a0<\/span><\/p>\n<h3>Sheetgo\u00a0Excel add-in anatomy<\/h3>\n<p><span data-contrast=\"auto\">The\u00a0<\/span><span data-contrast=\"auto\">Sheetgo<\/span><span data-contrast=\"auto\">\u00a0<\/span><span data-contrast=\"auto\">add-in\u00a0<\/span><span data-contrast=\"auto\">is\u00a0<\/span><span data-contrast=\"auto\">formed of<\/span><span data-contrast=\"auto\">\u00a0two\u00a0<\/span><span data-contrast=\"auto\">components<\/span><span data-contrast=\"auto\">:\u00a0<\/span><\/p>\n<ul>\n<li><span data-contrast=\"auto\">T<\/span><span data-contrast=\"auto\">he application that interacts with the add-in framework<\/span><\/li>\n<li><span data-contrast=\"auto\">The <\/span><span data-contrast=\"auto\">Sheetgo<\/span><span data-contrast=\"auto\"> web application<\/span><span data-contrast=\"auto\">\u00a0<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:200,&quot;335559740&quot;:360}\">\u00a0<\/span><\/li>\n<\/ul>\n<p><span data-contrast=\"auto\">The<\/span><span data-contrast=\"auto\">\u00a0first\u00a0<\/span><span data-contrast=\"auto\">component<\/span><span data-contrast=\"auto\">, the<\/span><span data-contrast=\"auto\"> application that interacts with the add-in task p<\/span><span data-contrast=\"auto\">ane<\/span><span data-contrast=\"auto\">,<\/span><span data-contrast=\"auto\">\u00a0authenticates the user using a\u00a0<\/span><span data-contrast=\"auto\">Sheetgo<\/span><span data-contrast=\"auto\">\u00a0SSO session\u00a0<\/span><span data-contrast=\"auto\">via<\/span><span data-contrast=\"auto\"> the dialog box and then identifies the spreadsheet<\/span><span data-contrast=\"auto\">. It subsequently<\/span><span data-contrast=\"auto\">\u00a0<\/span><span data-contrast=\"auto\">loads the\u00a0<\/span><span data-contrast=\"auto\">Sheetgo<\/span><span data-contrast=\"auto\"> web app inside it, as seen in the following sample:\u00a0<\/span><\/p>\n<pre class=\"lang: decode:true\" title=\"Authentication sample code\">OfficeAddinService.js\u00a0\n\n\/\/ Create an oauth2 flow for the SSO authentication\u00a0\n\nconst authFlow = buildAuthFlow()\u00a0\n\u00a0\n\n\/\/ Init the dialog box and authenticates the session user\u00a0\n\nOfficeService\u00a0\n\n\u00a0\u00a0\u00a0.openDialogBox(authFlow)\u00a0\n\n\u00a0\u00a0\u00a0.then((sessionUser) =&gt; {\u00a0\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ Extract the file path from the browser URL\u00a0\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0const filePath = OfficeService.getFilePath()\u00a0\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ Get the current file props (id, name, etc) using the Graph API\u00a0\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0const file = GraphAPI.fetchFileId(filePath)\u00a0\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ Loads the Sheetgo application\u00a0\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0loadSheetgoApplication(sessionUser, file)\u00a0\u00a0\u00a0\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ ...\u00a0\n\n\u00a0\u00a0 })\u00a0\n\n\u00a0\u00a0\u00a0.catch((e) =&gt; {\u00a0\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0console.log('Houston we have a problem :(', e)\u00a0\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ Handle the auth error\u00a0\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ ...\u00a0\n\n\u00a0\u00a0 })<\/pre>\n<p><span data-contrast=\"auto\">The second\u00a0<\/span><span data-contrast=\"auto\">component<\/span><span data-contrast=\"auto\">\u00a0is the\u00a0<\/span><span data-contrast=\"auto\">Sheetgo<\/span><span data-contrast=\"auto\">\u00a0web app<\/span><span data-contrast=\"auto\">,<\/span><span data-contrast=\"auto\">\u00a0<\/span><span data-contrast=\"auto\">which<\/span><span data-contrast=\"auto\">\u00a0<\/span><span data-contrast=\"auto\">adapt<\/span><span data-contrast=\"auto\">s<\/span><span data-contrast=\"auto\">\u00a0to the add-in context and screen.\u00a0<\/span><span data-contrast=\"auto\">When loaded by the add-in, t<\/span><span data-contrast=\"auto\">he web app\u00a0<\/span><span data-contrast=\"auto\">adjusts its<\/span><span data-contrast=\"auto\">\u00a0format to fit the add-in screen and generate<\/span><span data-contrast=\"auto\">s<\/span><span data-contrast=\"auto\">\u00a0<\/span><span data-contrast=\"auto\">a\u00a0<\/span><span data-contrast=\"auto\">customized\u00a0<\/span><span data-contrast=\"auto\">experience\u00a0<\/span><span data-contrast=\"auto\">for<\/span><span data-contrast=\"auto\">\u00a0<\/span><span data-contrast=\"auto\">the\u00a0<\/span><span data-contrast=\"auto\">Excel user.\u00a0<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:200,&quot;335559740&quot;:360}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">In t<\/span><span data-contrast=\"auto\">he<\/span><span data-contrast=\"auto\">\u00a0<\/span><span data-contrast=\"auto\">Sheetgo<\/span><span data-contrast=\"auto\">\u00a0web app<\/span><span data-contrast=\"auto\">,\u00a0<\/span><span data-contrast=\"auto\">the\u00a0<\/span><span data-contrast=\"auto\">user can create multiple spreadsheet workflows and\u00a0<\/span><span data-contrast=\"auto\">get a bird<\/span><span data-contrast=\"auto\">\u2019<\/span><span data-contrast=\"auto\">s-eye\u00a0<\/span><span data-contrast=\"auto\">view<\/span><span data-contrast=\"auto\">\u00a0<\/span><span data-contrast=\"auto\">of the entire<\/span><span data-contrast=\"auto\">\u00a0spreadsheet system\u00a0<\/span><span data-contrast=\"auto\">and\u00a0<\/span><span data-contrast=\"auto\">all connections.\u00a0<\/span><span data-contrast=\"auto\">A<\/span><span data-contrast=\"auto\">lthough a single spreadsheet file\u00a0<\/span><span data-contrast=\"auto\">may<\/span><span data-contrast=\"auto\">\u00a0belong to\u00a0<\/span><span data-contrast=\"auto\">multiple\u00a0<\/span><span data-contrast=\"auto\">complex\u00a0<\/span><span data-contrast=\"auto\">workflows<\/span><span data-contrast=\"auto\">,\u00a0<\/span><span data-contrast=\"auto\">the add-in will\u00a0<\/span><span data-contrast=\"auto\">only\u00a0<\/span><span data-contrast=\"auto\">display<\/span><span data-contrast=\"auto\">\u00a0the\u00a0<\/span><span data-contrast=\"auto\">connections\u00a0<\/span><span data-contrast=\"auto\">to and from th<\/span><span data-contrast=\"auto\">e<\/span><span data-contrast=\"auto\">\u00a0file the user is currently working in<\/span><span data-contrast=\"auto\">.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:200,&quot;335559740&quot;:360}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">Inside the<\/span><span data-contrast=\"auto\">\u00a0add-in, t<\/span><span data-contrast=\"auto\">he user sees\u00a0<\/span><span data-contrast=\"auto\">the<\/span><span data-contrast=\"auto\">\u00a0web app interface<\/span><span data-contrast=\"auto\">\u00a0and<\/span><span data-contrast=\"auto\">\u00a0<\/span><span data-contrast=\"auto\">benefits from<\/span><span data-contrast=\"auto\">\u00a0the\u00a0<\/span><span data-contrast=\"auto\">web-app&#8217;s\u00a0<\/span><span data-contrast=\"auto\">entire\u00a0<\/span><span data-contrast=\"auto\">backend<\/span><span data-contrast=\"auto\">. When the user connects two spreadsheets using the\u00a0<\/span><span data-contrast=\"auto\">Sheetgo<\/span><span data-contrast=\"auto\">\u00a0add-in,\u00a0<\/span><span data-contrast=\"auto\">the\u00a0<\/span><span data-contrast=\"auto\">Sheetgo<\/span><span data-contrast=\"auto\">\u00a0web app backend communicat<\/span><span data-contrast=\"auto\">es<\/span><span data-contrast=\"auto\">\u00a0with\u00a0<\/span><span data-contrast=\"auto\">the Microsoft <\/span><span data-contrast=\"auto\"><a href=\"https:\/\/developer.microsoft.com\/graph\">Graph API<\/a> to process data transportation\u00a0<\/span><span data-contrast=\"auto\">f<\/span><span data-contrast=\"auto\">rom one f<\/span><span data-contrast=\"auto\">ile<\/span><span data-contrast=\"auto\">\u00a0to another<\/span><span data-contrast=\"auto\">.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:200,&quot;335559740&quot;:360}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">The\u00a0<\/span><span data-contrast=\"auto\">Sheetgo<\/span><span data-contrast=\"auto\"> web app uses the Microsoft Graph API for authenticatio<\/span><span data-contrast=\"auto\">n,\u00a0<\/span><span data-contrast=\"auto\">to\u00a0<\/span><span data-contrast=\"auto\">list or create files and folders,<\/span><span data-contrast=\"auto\">\u00a0and<\/span><span data-contrast=\"auto\">\u00a0<\/span><span data-contrast=\"auto\">to\u00a0<\/span><span data-contrast=\"auto\">read and edit Excel files in OneDrive for Business or SharePoint sites\u00a0<\/span><span data-contrast=\"auto\">and<\/span><span data-contrast=\"auto\"> groups.<\/span><\/p>\n<h3>Enabling Excel users to automate their work<\/h3>\n<p><span data-contrast=\"auto\">Sheetgo<\/span><span data-contrast=\"auto\">\u00a0gives individuals and teams the ability to create their own automated da<\/span><span data-contrast=\"auto\">ta management workflows<\/span><span data-contrast=\"auto\">\u00a0<\/span><span data-contrast=\"auto\">\u2014<\/span><span data-contrast=\"auto\">\u00a0<\/span><span data-contrast=\"auto\">all from a spreadsheet. By connecting files, users can automate the process of gathering, distributing and sharing data for greater productivity, enhanced security<\/span><span data-contrast=\"auto\">,<\/span><span data-contrast=\"auto\">\u00a0and better business intelligence.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:200,&quot;335559740&quot;:360}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">Our customers use\u00a0<\/span><span data-contrast=\"auto\">Sheetgo<\/span><span data-contrast=\"auto\">\u00a0to crea<\/span><span data-contrast=\"auto\">te their own custom solutions for<\/span><span data-contrast=\"auto\">:<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559739&quot;:200,&quot;335559740&quot;:360}\">\u00a0<\/span><\/p>\n<ul>\n<li><span data-contrast=\"auto\">Automated forecasting and financial reporting<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559740&quot;:360}\">\u00a0<\/span><\/li>\n<li><span data-contrast=\"auto\">SME inventory management<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559740&quot;:360}\">\u00a0<\/span><\/li>\n<li><span data-contrast=\"auto\">HR and education administration<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559740&quot;:360}\">\u00a0<\/span><\/li>\n<li><span data-contrast=\"auto\">Project management and team collaboration<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559740&quot;:360}\">\u00a0<\/span><\/li>\n<li><span data-contrast=\"auto\">Manag<\/span><span data-contrast=\"auto\">ing<\/span><span data-contrast=\"auto\">\u00a0company or departmen<\/span><span data-contrast=\"auto\">t<\/span><span data-contrast=\"auto\">\u00a0OKRs<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335551550&quot;:6,&quot;335551620&quot;:6,&quot;335559740&quot;:360}\">\u00a0<\/span><\/li>\n<\/ul>\n<p>Check out <a href=\"https:\/\/www.youtube.com\/watch?v=-EDxGyairvI\">this demo video<\/a> to see Sheetgo in action:<\/p>\n<p>If you&#8217;d like to get started making an Excel Add-in, <a href=\"https:\/\/docs.microsoft.com\/en-us\/office\/dev\/add-ins\/quickstarts\/excel-quickstart-jquery?tabs=yeomangenerator\">check out this five minute quick start<\/a> within our documentation.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Learn how Sheetgo uses add-ins to connected Excel spreadsheets to build custom, automated workflows.<\/p>\n","protected":false},"author":69076,"featured_media":25159,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[11],"tags":[18],"class_list":["post-6042","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-office-add-ins","tag-excel"],"acf":[],"blog_post_summary":"<p>Learn how Sheetgo uses add-ins to connected Excel spreadsheets to build custom, automated workflows.<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/posts\/6042","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/users\/69076"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/comments?post=6042"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/posts\/6042\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/media\/25159"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/media?parent=6042"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/categories?post=6042"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/tags?post=6042"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}