Most Recent Articles
Manage Gemini uploads, schemas and prompts
I have thousands of pdf documents to analyze using Gemini - they are currently on Cloud storage. I've been playing around with prompts to get the structured output I'm looking for and I quickly found needed a way to easily upload and manage them to Gemini, and repeatedly fiddle around with the schema, prompts and uploaded files directly from my terminal session. I also found that quite a number of these documents, despite being named differently had the same content so I needed a way of pruning uploaded documents by content to avoid analyzing the same thing multiple times. Here's my solution - I've found it super useful. Hope you do too. 'Gupper' cli can currently upload to Gemini, generate results and write them to these places local files Google Cloud Storage Google Drive What gupper can do right from its cli interface I found it a great timesaver when ...
Application Default Credentials with Google Cloud and Workspace APIs
Authentication and Authorization are probably the most confusing aspects of working with APIS. There are so many different options that it's hard to pick which one to use, and the examples and documentation often refer to one of the ways you haven't picked. It takes a lot of effort before ...
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 ...
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 ...
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 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 ...
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 ...
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 ...
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 and GraphQL together
A Google Cloud run hosted puppeteer with a graphQL interface and examples in Node and Apps Script ...
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 ...
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
Shared cached data between multiple scripts with this enhanced Apps Script Cacheservice library ...
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 ...
Kubernetes secret values as shell environment variables
Getting a bunch of secret values out of kubernetes into your local shell ...