<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Automation - Belleville</title>
	<atom:link href="https://belleville.cloud/category/automation/feed/" rel="self" type="application/rss+xml" />
	<link>https://belleville.cloud</link>
	<description>Unlock the Power of Data</description>
	<lastBuildDate>Fri, 07 Mar 2025 18:44:21 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
<site xmlns="com-wordpress:feed-additions:1">240074922</site>	<item>
		<title>Automating Google Sheets with Python</title>
		<link>https://belleville.cloud/automating-google-sheets-with-python/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=automating-google-sheets-with-python</link>
		
		<dc:creator><![CDATA[Noah]]></dc:creator>
		<pubDate>Fri, 07 Mar 2025 18:17:11 +0000</pubDate>
				<category><![CDATA[Automation]]></category>
		<category><![CDATA[Informational]]></category>
		<guid isPermaLink="false">https://belleville.cloud/?p=535</guid>

					<description><![CDATA[<p>Automating tasks is a great way to save employees time, frustration, and foster a more efficient work environment. For a large portion of enterprises, Google Workspace and Googles Sheets is an easy to use, cheap option for simple data analysis. However, far too often organizations find themselves manually manipulating data in Google Sheets to meet [&#8230;]</p>
<p>The post <a href="https://belleville.cloud/automating-google-sheets-with-python/">Automating Google Sheets with Python</a> first appeared on <a href="https://belleville.cloud">Belleville</a>.</p>]]></description>
										<content:encoded><![CDATA[<div class="nfd-container nfd-text-md nfd-wb-text__text-7 wp-block-group is-layout-constrained wp-container-core-group-is-layout-346627ba wp-block-group-is-layout-constrained">
<div class="nfd-text-md wp-block-group is-layout-constrained wp-block-group-is-layout-constrained">
<div class="nfd-max-w-prose wp-block-group is-vertical is-content-justification-left is-layout-flex wp-container-core-group-is-layout-dd225191 wp-block-group-is-layout-flex" style="min-height:0px">
<p style="border-radius:0px" class="">Automating tasks is a great way to save employees time, frustration, and foster a more efficient work environment. For a large portion of enterprises, Google Workspace and Googles Sheets is an easy to use, cheap option for simple data analysis. However, far too often organizations find themselves manually manipulating data in Google Sheets to meet an urgent deadline. When urgent deadlines pile up, employees can find themselves spending hours a day maintaining simple spreadsheet reports when a more efficient solution is possible.</p>



<p class="">Google Sheets competitors, like Excel, have made great progress <a href="https://support.microsoft.com/en-us/office/get-started-with-python-in-excel-a33fbcbe-065b-41d3-82cf-23d05397f53d" title="">incorporating python functions and components into spreadsheet applications</a>. However, for organizations built on Google Workspace the option to bring in Python is more technical.</p>



<h2 class="wp-block-heading"><strong>Background:</strong></h2>



<p class="">In this post, we&#8217;ll examine how an small organization using Google Workspace can optimize operational workflows to cut an employee&#8217;s time and opportunity cost while maintaining reports in Google Sheets.</p>



<p class="">The solution outlined in this post is by no means best practice when it comes to cloud data architecture and infrastructure. However, not all businesses have the budget and person-power to implement and scale enterprise cloud solutions. This process is simply an alternative to aid smaller businesses interested in optimizing workflows and gaining efficiencies.</p>



<h2 class="wp-block-heading"><strong>Context:</strong></h2>



<p class="">Company123 &#8211; a small business &#8211; is running a series of advertisements across Facebook and Instagram in preparation for the summer holidays. Their technical staff includes 2 IT professionals working to provision technical equipment and monitor device security across the organization. The rest of their staff has extensive experience with Excel and Google Sheets, however there are no engineering or data professionals within the organization. <br><br>Company123 wants to aggregate their marketing campaign performance data across the different platforms they are advertising on. Currently, their employees are spending 1-2 hours a day going to each platform, downloading the performance report, standardizing this report, and updating a Google Sheet with the performance from the last day.</p>



<h2 class="wp-block-heading"><strong>Solution:</strong></h2>



<p class="">The process of extracting information from an external system and loading this information into a data lake for analytics is common practice for many organizations. However Company123 doesn&#8217;t have the expertise or budget to facilitate a cloud solution implementation. As a result of these limitations, Company123 is looking to automate portions of their employee workflow where possible.</p>



<p class="">The following solution utilizes: Google Cloud Console, Google Sheets API, Python, and Google Sheets.</p>
</div>



<p class="has-text-align-center"><strong>Current Process</strong></p>



<iframe frameborder="0" style="width:100%;height:468px;" src="https://viewer.diagrams.net/?tags=%7B%7D&#038;lightbox=1&#038;highlight=0000ff&#038;edit=_blank&#038;layers=1&#038;nav=1&#038;title=GSheetsPython_old.drawio#R%3Cmxfile%20pages%3D%222%22%3E%3Cdiagram%20name%3D%22Old%22%20id%3D%22Kx8nqx-y0BGZRC6kaL81%22%3E7VxZd5s4GP01Oad9sI%2FZbPOYOHbbmbSTJtOZdl56ZJAxCSAqhJf%2B%2BhGLbECyjRPAW5yHgBCL7v12Ca6Ugbv4gIE%2F%2FYxM6FzJHXNxpdxeybKk9mX6L2pZJi09XU8aLGybaad1w6P9G6aNnbQ1tE0Y5DoShBxi%2B%2FlGA3keNEiuDWCM5vluE%2BTk7%2BoDC3INjwZw%2BNZ%2FbZNM01a501kf%2BAhta8purcvpERew3mlDMAUmmmealOGVMsAIkWTLXQygE6HHgEnOG204unoyDD1S5oTnL3dPH%2FypCxX819N36Y%2BJvHhoKSkdM%2BCE6ZCvDYJw%2BshkyYCgT%2B9Hm6HrJB2UmxnExKZQ3YExdO5RYBMbebTLGBGC3EyHa8e2ogME%2BbR1SlyH7kh0E4XEsT04WJHXoY38uNKhRpeDi0xTOs4PELmQ4CXtkh5V1RTzVOokJk7zNYesyzTDXj9tA6nUWKsrr3GlGym0e8DclThAoUkFLd1FmEyRhTzgDNetNxiFngnNFJZ1nzsU4RgD%2BAQJWaZaA0KC8vBuRDJAITbgludVu6muAWxBUkJ%2BotFsZQZDBxB7ller1%2BA8uCWG%2FO2%2FP%2B%2B%2FzFrfgaaRUActmZNmDneLwuqXl7GVaQFjdoWOeITsLDkveyovelJfIHuSXoHwCUGRXgzKVoxfjlQjUGyV621YrNUu0qH51Cbw0Qexusypk8urGB0yAdSE4Y3Gaysluy1aKkVKWSnq1gWdxovRtUn376leTxB2Aw5IOjSSRwukjsCg6EAs8BCubZqx7RPBnreHtSO%2FC2qlNiEtYcVWwUQ0dBME0xUuGbgDgtEz9a5O5K5vPeRFyE5sx2FNV7KiqroWd3YKXpzjaE83z3EtdPYsrHAXVhRAtmcQArctm%2B05HP8M7fK8brJKG%2B100Uz325Ke%2FXH61hXIgCa1%2B3VJgfImBfVLAeP5aKVAfZOCxm2BJGltLSsFvUOLgdYRiEHXidyrac%2FophVtPkILQwsQyn96kN4sc1xwygP0aWJhe9amM07Bp%2B%2FNdz%2Bv9ZLcbWscxXX5fOEQuhzSDeSHFFW8%2FB6d3%2B50uqzhR9ygqqset4v0FsneMrt3D7FNEdjCWNmUk2WSO1PO48o4FeXAzGk53nZwVooecdys8fSIlbFzVPyw585Yzs%2FAC0F04i0ggP6j%2B7YfRg9DfdmrssGsP3Uiq9EyAX5%2BR13raJREE4MZwO9aLQvGR1pG3FmmQ6OoKZIc%2Fb1%2FX00RTJfyXq0vSiEl3sZVkkKKuTiwlctbOK0KXdlmoXaqCpPN5lVl22NXVhupQIa1gqcWynCjZZASBaTgGRJjmkqRj%2BwoLhrOKAgBi8WrCti1TvRXQ8AujM%2B5SK8YsKPJxDZgOwwgDtpGMPtJHxdWIwjdgjGTOrwkaDovCCyLrlwOem9ycBA50HUWqh%2BLJPTfJOEoLELvwHIg8Tl6rkBON5NsOxDk4axpjIstB03Iq%2BCpV0i2e00m22Km%2BKmMO2TEKcEjQThaEnByMBcjJa1kpFRbRUM6xnAybzLkHi%2BIK0CyINWHktLnQGkyJVrtVJgSba0K7M6JUkCOpHwg80a9WD4YeuxG51k3UASLZxouHMhlZkHqi7Fqnw7ZFMQVwyk3MABs06GFHmxHQxgjgM0KOO8XKFd7Ah%2B9irSzpOtaXZzzGdbQi%2BKpbzSYjLUvN%2FxT8tWr1YMMbkFZQzTBVJ8XEk0vFVCte92UJu92zorWqHOWSqR2rwxhttOx1yKV%2BsARB9H8%2BoTrIICEXwdkTG3HvANLmkJGJjASCLZ3g6ER4oC68QcYJNFKh7PC1CLq%2FfFELnpK2n7dG%2BiqnDXu9cDM1pXuXNonTGTqq0ZKKu8HU58R4%2FwQYXIzRdj%2BHU2tOit8ASaPGbzntusAD36EwCw03SCTRX%2Bx84q3HDhhJQDm6uIdnI459rAY%2BX%2BzaC%2BZ3HUc4Ad2Yg86G8mHCx947DEm9LFZMMxLhu1NIbYJLxeT%2BCcUhe3CvJfGibPW2uoL%2FEzWurRQVLmc7d2MdUk4V2rGRy4ZfqR0P3PiKP7tMoJbRXs%2FSnRlP0bSiz1EYHkWHcbeVwMORcIDhGoK9QQBR%2FPqOV%2FBPD%2FpMACuDyIuLpv5RZ6nLHVqpYJQ4mpNCAIfE39yfQyDgOYdAsd7ibIg9fnVWudpFcpMPLwFA7UGA8s8%2BztjA7mu2IAvto5oEjJG6LlWq7Bu5WzC3qnQdiF%2FfRSwBfsX6Hvhag3ou6AUOUFhVPydPIUOX4E8V5739Pkvp73E1ZqgnZ%2BskjqsgHQ5dJd26yev5vIlu3W%2BBr%2FRrQ%2BvR%2FKtUqdb7wqmB4Vuva4VeTJfY%2FvkUWItDOrN%2Bdet1ej7Sqhf78a3YP0C%2FS5crQn95ueyXHN%2Brmzu6axfTm6JqzVBLl%2Bjk5tz1odit7RvPnndLbP692x981Gl3Hq3pG%2BuqxwvmJ%2F%2BgUISjvnFY%2FVoe5GamkL1lcy%2F1eFlvuLmgDHCJmgq%2Bz4%2Bzi%2BsAi%2FzhTalOQd%2FtPRfTNG9zEqZ840Ajio7l5guHiw9V%2FjSXMNV92r0%2FWXrjc4ywmcFvxPOzvdf1nQp2bnCl9PUU8vO92f3YrJzRTQhnrxEFTmxHMfdXyFiB1oJpde0g9T3FzEX7Dh77%2BoDQsmwH6eQ%2BtP1u1nJlY%2Fk5ax6ljkK1v83%2B3EU9mmQc39Jhjmf3S%2FJHNk3UHinOVwY8ZeARwi7oUPvSG8br97%2Fh2qAeW6f2lCO75UZlXdrZ6kzbCZ5p84wIW1eZ7phcP91%2BfTr87N5J4%2Bevnx1lqRV7ut%2Bp%2FPJZaWvtOX8m%2FmKzGuBorIXi7JqUIUWCFHmp2NOG2X9KFHeY1bkVFHWJcELcZXBTHfX34FPwuH15%2FSV4f8%3D%3C%2Fdiagram%3E%3C%2Fmxfile%3E"></iframe>



<p class="has-text-align-center"><strong>Updated Process</strong></p>



<iframe frameborder="0" style="width:100%;height:703px;" src="https://viewer.diagrams.net/?tags=%7B%7D&#038;lightbox=1&#038;highlight=0000ff&#038;edit=_blank&#038;layers=1&#038;nav=1&#038;title=GSheetsPython_new.drawio#R%3Cmxfile%20pages%3D%222%22%3E%3Cdiagram%20name%3D%22NEw%22%20id%3D%22AkZQsPug7u5A7OvypZOh%22%3E7V1rd6I6F%2F41fnnX0sVV5aOXepmj1qlOW%2FvlrAgRo0B8uXj79SdBUCG0YivWaetMV00IIXmevbP3DkmaE2vmummDxbSLNWjkBE5b58R6ThB4qSyQXzRns8spKcouQ7eRFhQ6ZAzQFgaZXJDrIQ06kYIuxoaLFtFMFVsWVN1IHrBtvIoWm2Aj%2BtQF0CGTMVCBweY%2BIc2dBrkCxx0utCDSp%2BGjFSG4YoKwdJDhTIGGV0dZ4l1OrNkYu7tv5roGDYpeCAz6gx5Hw77CTaozU62O5X%2FyRn5XWeOcW%2FZ9sKHlXrbqgN0lMLwAsIrqYjvosLsJYSR9X9CvnmnsCojVJbRdRIDugDE0%2BthBLsIWKTLGrovNowIVA%2Bn0gosXJHfqmgZJ8OQr9lwDWbC2p54jmSn7GmBCnwHXR1QHfW9CbELX3pAiwVVJCmgMBJkPJXR1EIuwyPRIIMpBHggEUd%2FXfMCafAngPgN6kQEZakR0gyS23SnWsQWMu0Nu1caepUEtgOpQpoMptj6oM%2Bi6m0APgefiKOTnoetgz1bhG%2BWKgUYDW4dv1ReIGe3gm1zZ0AAuWkZ19%2BLIS4zQM1ToBOnFB0VxP6iBcVgtl9zt8C4hKqISK6F8OUFEeSUrGZUvi5T0YaQ%2BD4riaSgO2klVbTVFLhwsgK9AK2Jdo5pIeuwCMvrZ54178isQslAFQiSmFaJiVsiVWBujkXSfqPoE26bD4Eh65kbBAoEJUQk40E6wLSbSNH%2BETEI9OmpmDvwppMWsgC6fFtG9D0N7rgFnuoflCG3HtfGcmGWD2vm6hS0K7AQZRpiVE0RJUmS%2FsBEz%2FwxFZ%2FoHDNWJXkLoj5hrnfqthSWEwCwIWmEFx%2F96KD2trw1Jrw7S8TG6XOCV4w%2BjbcUEEZD5QjkjIVB%2BhCB7IQhpvlUhCH3bHym44lDA83JBPpaC0qeLAZ8gBkWDGlcNLclXnX4dQN2GOnAJ%2F8FF8rCj6wm3PMAFCT6Qpb92x99g0c%2FmuxzVel4oFmSG4qtafJ5V6ysEkQRWe%2FNM7y9wXDHMGPkZkrQvUV8Hj9ilNsepPrQRgeBcytLGpQEsJ%2BNSPvDqbyQw5S8dZJwHa3pNkGOqUP70IINnowzW4s2hq04DiVtgREeeuyWBxgmt3aVMoszRfxmYxEQLyIylcZOIJxOkwoLnQNspqM7yX9JcmKF4FPmYZeRY%2BZAVVjwkMSvpSBMa%2FUjHlaRDUUK7eTPykSZq%2BpGPTxo9Sp8sHQIbTUVmsMjXnUPsJLjKYdbYjud8qs%2BcGXmlmJNc%2BnQnWWCjoA4mqJGsgYtt%2BgLxa2Af98rklF5ZdsincMpu4k2LnPAyUJQToLoIVqNKQxYro35b6v%2FTeFxqq1WpEc6S3%2BTrwJDH03FX4GddLp4Kbu1Te5t742WuHK1iF%2FkFd8WY2TfjA4Kdwp%2FMIlDbK9RZbyGyk%2BTkRrLOVMVxoMu%2B6FGnyNA6YEP8EuqjUO0NU1Ubqp7tEBF5gM5OfDnGfSK%2BklIeTwSe9aEqpZoiCcdeWTYwhwJ58s1tos3LLh4O2U1Yw%2BHj%2FEAxqU6xjbZ09szY4wtsd3CE9wqZBrBgCwItllXFWjil43uX%2FjcDTkK%2FMvRF%2FYQd9Nl3jW28GIYzM7v5O8MACwftBm%2FuVfLhegGssBkT0uxwdGQlA1lTaCOXlYuJ%2FzlDFJTUonCKbDEr%2F1RkHZyDaxpXuYihfB3rlHDu1Yzxj4754YP00Y0N%2F%2FOuQTAU7fMoUcTzGAkqe6BgWTrpxtm1AYMgYQGXaAqxBE4WdkgUGOZrwFwAysX3Zn4d5emYOumigpCitmsIgsgIQttc2NBxELYSDO93lAW%2BzL6Q%2B5qjQooFbj%2FOQLbOwCbK%2FknfQMjKN2CX8DVIEDLGeJ7pqHDIZcaEy4RCYvrXt6c09A3s36Hvsdquoe%2Fsa8MJidTdKZ7MPGPzbXg%2B0%2Ba%2Fn%2FYUtV2DdnZ2jec4Nu774nSnNut%2FvZqnW9%2F5Rc06%2B%2FLsVbN%2BV2kIdTFLs15kX2kkm%2FWsVoqI7Bxb2yLE6jbINuY%2F5F5I38upsT%2Blkadnkc%2FR71htV9BviX3NaGqrr8rmmcb6%2FeSmqO0a5LJzdML1jPVnsZvaNv%2F1ustOxH0j23xTIbdSTGmbs5qOl9i5uBH2XG%2FMrjPIRtvj1GTkqu9l%2FmceXmJn3AwwxrYGrhV93x7n32wGXmIn2sTrGfibpf%2FbTLpLKdbuf10P4Kaicz685dPCc4mdmrvyrPuF9L2YGvsv7%2BGzs29%2FW3R%2BBpvfLTpnp9Okvy06P5%2FdbxOdy%2BzMWrgInxqxCMfF%2F3s4vJDfUVohBfjyYu1zEV4P1%2B03Md51ezCFxJ4e1vbvar7lxf0fXuaYsGo6s6X9iYumiwyw193%2BKueON7%2Fm3t74mpKVtHtc5WDoPH340sUXZX%2FsTKE0q1Piy3w1%2F5OLLefdFQvPdeMj5Po6NXaw4bmwYqsBm37uPiWczUp6VRFL0T1uUsIet%2F3OpmNlyWxJsJx0mlNkFFT3gB9GORrE%2Bqbw7YHPeXXki29%2FqhnY08htlX47QXuRb1xrjvPgGf65gYX%2FRbUvtoIsOG%2FjsGsNmf6JgK9ukdsPo6%2BOr%2FFdd0HktB%2BhdxFW1SEjMLL0zi7eEqiGEylyg2b6GwR9BuVqTq6THL9hFWdx2HkXNLWuARcQK7NLCg1nqeeE6pr0WKj1Wz3hZVOVxk9rT91yCLQeOLWOlx1RE7WNLHY38lI11WV3Vll1a8pWM1XUbk3dcVPe3lsjpW1OOa1V3d6j8lIzH2da884DT%2BXl2Gx4401b1wRjrjV1pT1rr9qoil%2BeDAu0fodpATw9ir9NReoPSLpe0clz6A%2Fqo9EMNu9KteF6q7UM52VQ5eBz1egPfnEvz1OuI%2FS26oYQXP2FetJo6PzqWD2u23JN8LR27lGX6850%2FmX2uzQZBDUN5K1Wb5ReTMMZ1%2FGsNxvJL82RcC9yZlucTu9Xc08Vf2%2Bg8LIYN1fFttAwRsIvczR0lfAZfYoAbc1QCu8pq80GB2rV2bjZ2FIESR20Z3PS0l53%2BNvr1ed6d1jtdoekZ0G6N5D47qCy7tb8H74z%2B7OGc26XRpLc%2FbPa%2FT6UETuzityuq153V1%2BxjcpHve%2B3qlOCsz4S1lNV7Cptisagrb%2FUOTQcUmzvVqDGbTqzET%2BucVtS26Zd75LafmHyJKH3jFFn%2B2avNvteUY6GVaczpPe33e5GWnVN3fXrIS3vbaRtj7a8tej5rW%2Fqu%2BfWj8rPdb8NELWXR1yvRs8PuN3sOaPn3pY8izB2h9pNIi9zjqA0Ekk%2F%2FPuG9bbXm%2F2h7Wh3m6vj%2FqRBBoXI3BFkaE2PT927ldCZzaWgFiElKusD137vKLdCjx8FraT1V9PWdUCYysqsKnSGftuiSFsjH80zkFv796HKukdk6r412jNF2fHZehxtuq2j9m1XS1V8sfo6HWDo%2F9SnmL1r1Zz4hk%2F3wZ1cfGwneGwfF55MHPjRLVyJrmOKE5I%2BZWuiXJQiiCRtTUwkJMMNXcJprD642%2B1Nis7benNlbFIckZnhyQGZH7n12tEE8UMCTEcFsEC65lmwQLswxsDWLk506FxH49CSkLDHfH%2BoxLEgKHJWcsBO%2F99Z1M394xAcBa4eheQTpwIuwwAvx6cCWAaSTjvLbCpASggmPm0q4NQZWKH2GMiaf2hmIBGKYNLthk%2B%2FSmy2fEsMZjeZ8yHKQv%2FtRihjV7qwxi8Wl7NhMAgTE7SmVL7XdoXh9NR16R8XqNCuCQ1VswqI%2BGCOij23oJL7hQZN03kKG9J4e2HpeZmepOdn5BcbIkRW3iCClKcF88Q0WwYGWh5ZeRKb52l5HU3y9BicPN1kC1wnn3ehOrWIodQ3eQerCBh5E2oI5JeYsJYnQ%2FTcr9Lx63TygiLJnKIUSGU5sTGhwzccE2ezCEzaF%2BoM0DZleB6%2BwMVOYUo6xS08zeV4CA%2FzzpAmkjz8nYSdB3%2F4cxPi3X8%3D%3C%2Fdiagram%3E%3C%2Fmxfile%3E"></iframe>
</div>



<div class="nfd-text-md wp-block-group is-layout-constrained wp-block-group-is-layout-constrained">
<div class="nfd-max-w-prose wp-block-group is-vertical is-content-justification-left is-layout-flex wp-container-core-group-is-layout-dd225191 wp-block-group-is-layout-flex">
<p class="">Between data retrieval, consolidation, entry, and validation, the deprecated process takes hours of manual effort a day. Once the updated process is implemented, the consolidation, transformation, and entry is automated. At that point, an employee&#8217;s only daily task is to download the performance files into a specific directory and review the dashboard. </p>



<p class="has-x-small-font-size"><em>Data quality and validation checks can be applied in this process, but are not included in this demo.</em></p>
</div>
</div>
</div>



<div class="nfd-container nfd-text-md nfd-wb-text__text-12 wp-block-group is-layout-constrained wp-block-group-is-layout-constrained">
<div class="nfd-max-w-prose wp-block-group is-vertical is-content-justification-stretch is-layout-flex wp-container-core-group-is-layout-353c4f5a wp-block-group-is-layout-flex" style="min-height:0px">
<div class="wp-block-uagb-slider uagb-block-57647190 uagb-slider-container"><div class="uagb-slides uagb-swiper"><div class="swiper-wrapper">
<div class="wp-block-uagb-slider-child uagb-slider-child-wrap swiper-slide uagb-block-6c00ce08"><div class="swiper-content">
<figure class="is-style-default nfd-rounded-sm wp-block-image size-full"><img data-recalc-dims="1" fetchpriority="high" decoding="async" width="3318" height="1830" src="https://i0.wp.com/belleville.cloud/wp-content/uploads/2025/03/Screenshot-2025-03-06-at-11.52.15%E2%80%AFAM.png?resize=3318%2C1830&#038;ssl=1" alt="" class="wp-image-544" style="aspect-ratio:16/9;object-fit:cover" srcset="https://i0.wp.com/belleville.cloud/wp-content/uploads/2025/03/Screenshot-2025-03-06-at-11.52.15%E2%80%AFAM.png?w=3318&amp;ssl=1 3318w, https://i0.wp.com/belleville.cloud/wp-content/uploads/2025/03/Screenshot-2025-03-06-at-11.52.15%E2%80%AFAM.png?resize=300%2C165&amp;ssl=1 300w, https://i0.wp.com/belleville.cloud/wp-content/uploads/2025/03/Screenshot-2025-03-06-at-11.52.15%E2%80%AFAM.png?resize=1024%2C565&amp;ssl=1 1024w, https://i0.wp.com/belleville.cloud/wp-content/uploads/2025/03/Screenshot-2025-03-06-at-11.52.15%E2%80%AFAM.png?resize=768%2C424&amp;ssl=1 768w, https://i0.wp.com/belleville.cloud/wp-content/uploads/2025/03/Screenshot-2025-03-06-at-11.52.15%E2%80%AFAM.png?resize=1536%2C847&amp;ssl=1 1536w, https://i0.wp.com/belleville.cloud/wp-content/uploads/2025/03/Screenshot-2025-03-06-at-11.52.15%E2%80%AFAM.png?resize=2048%2C1130&amp;ssl=1 2048w, https://i0.wp.com/belleville.cloud/wp-content/uploads/2025/03/Screenshot-2025-03-06-at-11.52.15%E2%80%AFAM.png?w=3000&amp;ssl=1 3000w" sizes="(max-width: 1000px) 100vw, 1000px" /><figcaption class="wp-element-caption">For our demo use case, Company123 has this google sheet configured to populate a dashboard in separate sheet.</figcaption></figure>
</div></div>



<div class="wp-block-uagb-slider-child uagb-slider-child-wrap swiper-slide uagb-block-162e297c"><div class="swiper-content">
<figure class="is-style-default nfd-rounded-sm wp-block-image size-full"><img data-recalc-dims="1" decoding="async" width="3318" height="1830" src="https://i0.wp.com/belleville.cloud/wp-content/uploads/2025/03/Screenshot-2025-03-06-at-12.44.49%E2%80%AFPM.png?resize=3318%2C1830&#038;ssl=1" alt="" class="wp-image-550" style="aspect-ratio:16/9;object-fit:cover" srcset="https://i0.wp.com/belleville.cloud/wp-content/uploads/2025/03/Screenshot-2025-03-06-at-12.44.49%E2%80%AFPM.png?w=3318&amp;ssl=1 3318w, https://i0.wp.com/belleville.cloud/wp-content/uploads/2025/03/Screenshot-2025-03-06-at-12.44.49%E2%80%AFPM.png?resize=300%2C165&amp;ssl=1 300w, https://i0.wp.com/belleville.cloud/wp-content/uploads/2025/03/Screenshot-2025-03-06-at-12.44.49%E2%80%AFPM.png?resize=1024%2C565&amp;ssl=1 1024w, https://i0.wp.com/belleville.cloud/wp-content/uploads/2025/03/Screenshot-2025-03-06-at-12.44.49%E2%80%AFPM.png?resize=768%2C424&amp;ssl=1 768w, https://i0.wp.com/belleville.cloud/wp-content/uploads/2025/03/Screenshot-2025-03-06-at-12.44.49%E2%80%AFPM.png?resize=1536%2C847&amp;ssl=1 1536w, https://i0.wp.com/belleville.cloud/wp-content/uploads/2025/03/Screenshot-2025-03-06-at-12.44.49%E2%80%AFPM.png?resize=2048%2C1130&amp;ssl=1 2048w, https://i0.wp.com/belleville.cloud/wp-content/uploads/2025/03/Screenshot-2025-03-06-at-12.44.49%E2%80%AFPM.png?w=3000&amp;ssl=1 3000w" sizes="(max-width: 1000px) 100vw, 1000px" /><figcaption class="wp-element-caption">Sample dashboard populated from April data in the Master Marketing Campaign Tracker.</figcaption></figure>
</div></div>
</div></div><div class="swiper-pagination"></div><div class="swiper-button-prev"></div><div class="swiper-button-next"></div></div>



<p class="">To begin, an employee begins their manual tasks per usual. They navigate to each of the ad platforms and download the performance reports to specific directory. Then, the python function can be executed automatically with a directory polling package like, <a href="https://timgolden.me.uk/python/win32_how_do_i/watch_directory_for_changes.html" title="">watchdog</a>.</p>



<p class="has-x-small-font-size"><em>One alternative to directory polling could be to build a process which load the files into cloud storage and build a Google Cloud Function (which might lead down a path of full scale cloud architecture). If you store the files in cloud storage, why not build a pipeline from the external data source directly to cloud storage</em>? <em>Why not model directly in BigQuery? Why not build the Google Sheets dashboard in Looker?</em> </p>



<p class="has-x-small-font-size">For this use case, we&#8217;ll assume the answer to all of these questions is cost.</p>



<div class="wp-block-uagb-slider uagb-block-4e5f3ceb uagb-slider-container"><div class="uagb-slides uagb-swiper"><div class="swiper-wrapper">
<div class="wp-block-uagb-slider-child uagb-slider-child-wrap swiper-slide uagb-block-ed3d6fce"><div class="swiper-content">
<figure class="is-style-default nfd-rounded-sm wp-block-image size-full"><img data-recalc-dims="1" decoding="async" width="3318" height="1830" src="https://i0.wp.com/belleville.cloud/wp-content/uploads/2025/03/Screenshot-2025-03-06-at-11.53.28%E2%80%AFAM.png?resize=3318%2C1830&#038;ssl=1" alt="" class="wp-image-545" style="aspect-ratio:16/9;object-fit:cover" srcset="https://i0.wp.com/belleville.cloud/wp-content/uploads/2025/03/Screenshot-2025-03-06-at-11.53.28%E2%80%AFAM.png?w=3318&amp;ssl=1 3318w, https://i0.wp.com/belleville.cloud/wp-content/uploads/2025/03/Screenshot-2025-03-06-at-11.53.28%E2%80%AFAM.png?resize=300%2C165&amp;ssl=1 300w, https://i0.wp.com/belleville.cloud/wp-content/uploads/2025/03/Screenshot-2025-03-06-at-11.53.28%E2%80%AFAM.png?resize=1024%2C565&amp;ssl=1 1024w, https://i0.wp.com/belleville.cloud/wp-content/uploads/2025/03/Screenshot-2025-03-06-at-11.53.28%E2%80%AFAM.png?resize=768%2C424&amp;ssl=1 768w, https://i0.wp.com/belleville.cloud/wp-content/uploads/2025/03/Screenshot-2025-03-06-at-11.53.28%E2%80%AFAM.png?resize=1536%2C847&amp;ssl=1 1536w, https://i0.wp.com/belleville.cloud/wp-content/uploads/2025/03/Screenshot-2025-03-06-at-11.53.28%E2%80%AFAM.png?resize=2048%2C1130&amp;ssl=1 2048w, https://i0.wp.com/belleville.cloud/wp-content/uploads/2025/03/Screenshot-2025-03-06-at-11.53.28%E2%80%AFAM.png?w=3000&amp;ssl=1 3000w" sizes="(max-width: 1000px) 100vw, 1000px" /><figcaption class="wp-element-caption">After the function has run, the google sheet is now updated based on the reports downloaded from the ad platforms for the month of May. Our script has populated our Platform value according to which platform the advertising data came from.</figcaption></figure>
</div></div>



<div class="wp-block-uagb-slider-child uagb-slider-child-wrap swiper-slide uagb-block-bff661bd"><div class="swiper-content">
<figure class="is-style-default nfd-rounded-sm wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="3318" height="1830" src="https://i0.wp.com/belleville.cloud/wp-content/uploads/2025/03/Screenshot-2025-03-06-at-12.40.47%E2%80%AFPM.png?resize=3318%2C1830&#038;ssl=1" alt="" class="wp-image-551" style="aspect-ratio:16/9;object-fit:cover" srcset="https://i0.wp.com/belleville.cloud/wp-content/uploads/2025/03/Screenshot-2025-03-06-at-12.40.47%E2%80%AFPM.png?w=3318&amp;ssl=1 3318w, https://i0.wp.com/belleville.cloud/wp-content/uploads/2025/03/Screenshot-2025-03-06-at-12.40.47%E2%80%AFPM.png?resize=300%2C165&amp;ssl=1 300w, https://i0.wp.com/belleville.cloud/wp-content/uploads/2025/03/Screenshot-2025-03-06-at-12.40.47%E2%80%AFPM.png?resize=1024%2C565&amp;ssl=1 1024w, https://i0.wp.com/belleville.cloud/wp-content/uploads/2025/03/Screenshot-2025-03-06-at-12.40.47%E2%80%AFPM.png?resize=768%2C424&amp;ssl=1 768w, https://i0.wp.com/belleville.cloud/wp-content/uploads/2025/03/Screenshot-2025-03-06-at-12.40.47%E2%80%AFPM.png?resize=1536%2C847&amp;ssl=1 1536w, https://i0.wp.com/belleville.cloud/wp-content/uploads/2025/03/Screenshot-2025-03-06-at-12.40.47%E2%80%AFPM.png?resize=2048%2C1130&amp;ssl=1 2048w, https://i0.wp.com/belleville.cloud/wp-content/uploads/2025/03/Screenshot-2025-03-06-at-12.40.47%E2%80%AFPM.png?w=3000&amp;ssl=1 3000w" sizes="(max-width: 1000px) 100vw, 1000px" /><figcaption class="wp-element-caption">Our dashboard has now updated with the newly entered data. </figcaption></figure>
</div></div>
</div></div><div class="swiper-pagination"></div><div class="swiper-button-prev"></div><div class="swiper-button-next"></div></div>



<div class="wp-block-uagb-slider uagb-block-2f2ace87 uagb-slider-container"><div class="uagb-slides uagb-swiper"><div class="swiper-wrapper">
<div class="wp-block-uagb-slider-child uagb-slider-child-wrap swiper-slide uagb-block-7ee007c4"><div class="swiper-content">
<figure class="is-style-default nfd-rounded-sm wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="3318" height="1830" src="https://i0.wp.com/belleville.cloud/wp-content/uploads/2025/03/Screenshot-2025-03-06-at-11.56.07%E2%80%AFAM-1.png?resize=3318%2C1830&#038;ssl=1" alt="" class="wp-image-548" style="aspect-ratio:16/9;object-fit:cover" srcset="https://i0.wp.com/belleville.cloud/wp-content/uploads/2025/03/Screenshot-2025-03-06-at-11.56.07%E2%80%AFAM-1.png?w=3318&amp;ssl=1 3318w, https://i0.wp.com/belleville.cloud/wp-content/uploads/2025/03/Screenshot-2025-03-06-at-11.56.07%E2%80%AFAM-1.png?resize=300%2C165&amp;ssl=1 300w, https://i0.wp.com/belleville.cloud/wp-content/uploads/2025/03/Screenshot-2025-03-06-at-11.56.07%E2%80%AFAM-1.png?resize=1024%2C565&amp;ssl=1 1024w, https://i0.wp.com/belleville.cloud/wp-content/uploads/2025/03/Screenshot-2025-03-06-at-11.56.07%E2%80%AFAM-1.png?resize=768%2C424&amp;ssl=1 768w, https://i0.wp.com/belleville.cloud/wp-content/uploads/2025/03/Screenshot-2025-03-06-at-11.56.07%E2%80%AFAM-1.png?resize=1536%2C847&amp;ssl=1 1536w, https://i0.wp.com/belleville.cloud/wp-content/uploads/2025/03/Screenshot-2025-03-06-at-11.56.07%E2%80%AFAM-1.png?resize=2048%2C1130&amp;ssl=1 2048w, https://i0.wp.com/belleville.cloud/wp-content/uploads/2025/03/Screenshot-2025-03-06-at-11.56.07%E2%80%AFAM-1.png?w=3000&amp;ssl=1 3000w" sizes="(max-width: 1000px) 100vw, 1000px" /><figcaption class="wp-element-caption">As part of the updating process, the system stores yesterday&#8217;s data in an archived sheet prior to updating the google sheet. Once the data is stored, it is hidden from the user&#8217;s view. </figcaption></figure>
</div></div>



<div class="wp-block-uagb-slider-child uagb-slider-child-wrap swiper-slide uagb-block-4486be86"><div class="swiper-content">
<figure class="is-style-default nfd-rounded-sm wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="3318" height="1830" src="https://i0.wp.com/belleville.cloud/wp-content/uploads/2025/03/Screenshot-2025-03-06-at-12.51.53%E2%80%AFPM.png?resize=3318%2C1830&#038;ssl=1" alt="" class="wp-image-553" style="aspect-ratio:16/9;object-fit:cover" srcset="https://i0.wp.com/belleville.cloud/wp-content/uploads/2025/03/Screenshot-2025-03-06-at-12.51.53%E2%80%AFPM.png?w=3318&amp;ssl=1 3318w, https://i0.wp.com/belleville.cloud/wp-content/uploads/2025/03/Screenshot-2025-03-06-at-12.51.53%E2%80%AFPM.png?resize=300%2C165&amp;ssl=1 300w, https://i0.wp.com/belleville.cloud/wp-content/uploads/2025/03/Screenshot-2025-03-06-at-12.51.53%E2%80%AFPM.png?resize=1024%2C565&amp;ssl=1 1024w, https://i0.wp.com/belleville.cloud/wp-content/uploads/2025/03/Screenshot-2025-03-06-at-12.51.53%E2%80%AFPM.png?resize=768%2C424&amp;ssl=1 768w, https://i0.wp.com/belleville.cloud/wp-content/uploads/2025/03/Screenshot-2025-03-06-at-12.51.53%E2%80%AFPM.png?resize=1536%2C847&amp;ssl=1 1536w, https://i0.wp.com/belleville.cloud/wp-content/uploads/2025/03/Screenshot-2025-03-06-at-12.51.53%E2%80%AFPM.png?resize=2048%2C1130&amp;ssl=1 2048w, https://i0.wp.com/belleville.cloud/wp-content/uploads/2025/03/Screenshot-2025-03-06-at-12.51.53%E2%80%AFPM.png?w=3000&amp;ssl=1 3000w" sizes="(max-width: 1000px) 100vw, 1000px" /><figcaption class="wp-element-caption">In the event of an error in processing, we save the state of data from yesterday to revert to a prior, accurate version. After restoring data from the archived version and auditing the process, we can re-trigger our automation. </figcaption></figure>
</div></div>
</div></div><div class="swiper-pagination"></div><div class="swiper-button-prev"></div><div class="swiper-button-next"></div></div>



<p class="">This semi-automated workflow mimics features and structure of data engineering in a cloud platform for a smaller business. For organizations looking to obtain similar efficiencies of cloud architecture, without breaking the bank, automation processes like this one can serve as a functional and efficient short term solution.</p>



<p class="">Key Benefits:</p>



<ul class="wp-block-list">
<li class="">Automating sections of employee workflow saving time and effort.</li>



<li class="">Limiting manual data entry, reducing errors.</li>
</ul>



<p class="">Downsides:</p>



<ul class="wp-block-list">
<li class="">This is not a scalable solution and cannot be productionized.</li>



<li class="">Prescribed solutions require clearly defined inputs and objectives. </li>
</ul>



<p class="">If you&#8217;re interested in discussing larger enterprise cloud solutions, like data warehouses and data lakes, <a href="https://belleville.cloud/contact/" title="">let&#8217;s chat</a>!</p>



<hr class="is-style-wide wp-block-separator has-alpha-channel-opacity"/>
</div>



<p class="">The entire script is listed below:</p>



<script src="https://gist.github.com/NoWessels/fd4d413a04734e77be6b7cdc0d048a82.js"></script>
</div>



<p class=""></p><p>The post <a href="https://belleville.cloud/automating-google-sheets-with-python/">Automating Google Sheets with Python</a> first appeared on <a href="https://belleville.cloud">Belleville</a>.</p>]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">535</post-id>	</item>
	</channel>
</rss>
