Desktop Liberation aims to help you use cloud based APIS and services without being constrained by your desktop software. There's a particular emphasis on Google Workspace and Cloud APIs and JavaScript, but there's also plenty of Microsoft and other stuff here too. All code here is unprotected and free to re-use

To support my site, and if you find the material useful, you can buy my Google Apps Script and VBA titles published by O'Reilly media and Manning publications.

Most Recent Articles

chunker and bulker

Paging large data sets and how to make Apps Script understand generators

We're all used to dealing with iterables such as Arrays, Maps and Sets. Creating a collection of input items, transforming then outputting is what we do all the time. However, sometimes that's not possible - for example, where we have a potentially large input data set of unknown size that would be too big to fit in memory, or perhaps an output method with rate limits. Dealing with items 1 by 1, despite being by far the simplest to code, is often the least efficient to execute - so we use a paging method to get an input chunk at a time, and a bulk method to flush out the transformed results. All of that can get a bit tricky, especially if you add asynchronicity into the mix.The use of iterators and generators can make coding as simple as 1 in -> 1 out, while handling chunking and bulking automagically ...
color strip deduplication

Color Vector embeddings vs Video Intelligence API labelling

In Making a film color DNA I described how I was using both color strips and labelled content to find videos that were duplicates or similar. I'm already using ElasticSearch to disambiguate films using labels and object tracking artefacts identified by the Google Video Intelligence API. The next step is ...
october 24 gassypedia

Gassypedia – October 2024 update

Time for an occassional update on the shared bigquery dataset all about the Apps Script ecosystem on Github, with reports available on looker. For details of how it all works see Gassypedia – public Google Apps Script on Github. Bear in mind that we are just looking at Apps Script ...
sharing files

Sharing content – not files – with Apps Script

My objective for a project I'm working on was to find a secure and simple way to publish ephemeral content without actually sharing files or hosting it anywhere. I'm not going to lie - this has been a super difficult problem to solve. Here's the Apps Script library I came ...
film color dna

Making a film color DNA

Some time ago I described how to use the Video Intelligence (VI) API to create the 'dna' of a film by using VI labels. You can then use these fingerprints to find films that are likely to be copies, or similar to other films. We did a Totally Unscripted show ...
git split apps script

Gassypedia – Apps Script developer ecosystem over time

A few months ago I released a publicly shared bigquery dataset all about the Apps Script ecosystem on Github, with reports available on looker. For details of how it all works see Gassypedia – public Google Apps Script on Github. Now we have a few months of data available we ...
gql on cloud run

Setting up a GraphQL server on Cloud Run

In a recent article Puppeteer, Cloud Run and GraphQL together I covered a GraphQL API for Pupeteer hosted on Google Cloud Run. This is publicly available for you try out. This article will cover all you need to know to get your own version running in your own Cloud Project ...
puppeteer cloud run graphql

Puppeteer, Cloud Run and GraphQL together

A Google Cloud run hosted puppeteer with a graphQL interface and examples in Node and Apps Script ...
convert pdf to multiple images

Manipulating PDFS in Apps Script

If you've used my Convert any file with Apps Script you'll know that it can take a wide range of files (currently 53 different mimeTypes, 42 types of imports, and 26 kinds of exports) and convert from one format to another. It uses the import and export functionality of the ...
asyncronicity, promises and apps script

Promises and async class constructors in Apps Script

Apps Script doesn't do asynchronous - so what's this all about? Since the move to v8, Apps Script supports the Promises as well as the related async/await syntax. Normally we don't have to worry about all that since all Apps Script services are synchronous. Yet we do know that server ...
Sharing cache between Google Workspace projects

Sharing cache between Google Workspace projects

Shared cached data between multiple scripts with this enhanced Apps Script Cacheservice library ...
js proxy

Extending a cache client with a proxy

Extend a client library object by proxying and intercepting calls to its native methods. This example adds functionality to a redis client, and also gives tips on using GCP secret manger for configuration ...
bash logo

Kubernetes secret values as shell environment variables

Getting a bunch of secret values out of kubernetes into your local shell ...
workload identity

Workload identity with Kubernetes cronjobs to synch Mongo to Bigquery

An example use case for Kubernetes workload identity federation - transferring collections from mongodb to bigquery with a Kubernetes cron job ...
custom chroma scheme

Color scales, custom schemes and proxies with Apps Script

How to add Google Material Colors and your own custom schemes to chroma ...

Or select a Tag in the below cloud

Your browser doesn't support the HTML5 CANVAS tag.

My YouTube Channel

My Publications

  • Going GAS Video

    Going GAS Video

    An accelerated video course over about 8 hours and 70 lessons taking you through JavaScript and Apps Script from start to finish. [...]
  • Going GAS Book

    Going GAS Book

    For those who prefer book and eBook formats, a 450+ page deep dive into Apps Script. Especially useful for those transitioning from another platform. [...]
  • Live Project

    Live Project

    Create, Implement and test a AI Powered Google Workspace Add-Ons. add functionality from a collection of Google Cloud APIs such as Cloud Storage, CardService, Drive and others [...]

Google developers expert program

The Google Developers Experts (GDE) Program is a community of outstanding professionals, developers, and thought leaders. Experts share their expertise and passion with other developers and tech communities.

My GDE profile - member since 2014

Support my research and site

Discover More Content

  • Repeatable add-on settings layouts and style
    If you have a few add-ons, it’s good to make the Settings a consistent layout and behavior across them. It’s …
  • Sankey Snip
    Important note on my add-ons I’ve (reluctantly) decided to stop supporting all my Apps Script add-ons, as I no longer …
  • From Xml to JSON
    In Convert JSON to XML I showed how to make XML from JSON. Here’s the opposite. It could be a …
  • Custom checking for exponential backoff
    If you are using my exponential backoff function from the cUseful library you will be aware that an apps script …
  • Color ramp library
    What can you learn here? ramp color scales gradient between colors Use a ramp library Generalized Color Ramps If you …

The most geeky things

  • Using promises in JavaScript and other languages is the preferred way to orchestrate the completion of asynchronous activities. Here’s a (not perfect but fun) Promise implementation in VBA. Example includes getting data from Google Fusion [...]
  • A whole bunch of front end platform libraries that go together really well, but that are hard to grasp and get started with. Here’s a bunch of snippets to help show how all these things [...]
  • The mathematics of color is a complex and interesting topic. Here you’ll find Google Apps Script, VBA and javascript examples of color manipulation including finding the closest match to a given color in a defined [...]
  • Automating document ,creating Google Visualization and static tables of VBA projects, serialize instances of VBA classes and generating Google Apps Script skeleton of VBA projects. […] Share with your network

I am supporting CandidateX

CandidateX is a startup that focuses on creating inclusion-focused hiring solutions, designed to increase access to job opportunities for underestimated talent. Check them out if you have a few minutes to spare. They need visibility!