Skip to content

#code

Google Drive Picker TypeScript - Types Updated

Last week I submitted a pull request to the DefinitelyTyped repository for the Google Drive Picker API. Not a big deal in itself, but these types are generated from the same source as the Google Drive Picker reference documentation and should be more correct and consistent than the community types that were previously in the DefinitelyTyped repository.

Google Forms - title vs name vs documentTitle

Recently I had to clarify some confusion around the title and name of a Google Form. Here is a quick explanation of the difference between the two.

Converting between Office docx and Google Docs in Google Apps Script

Learn how to programmatically convert, open, and edit Microsoft Word .docx files using Google Apps Script and the Drive API.

Google Workspace Developer Summits - 2024 - Boston and Berlin

Save the date for the Google Workspace Developer Summits in 2024! Boston - September 12, 2024 and Berlin - September 17, 2024.

Google Sheets API - IMPORT / Image - Bypass User Consent

Use the Spreadsheets v4 API to set the importFunctionsExternalUrlAccessAllowed property to true and allow access to external URLs without requiring user consent.

Apps Script and WebAssembly - A comprehensive guide

You can use WebAssembly with Google Apps Script! This post will cover how to do that and provide a comprehensive guide on how to get started.

SvelteKit: Convert base64 slugs to UUIDs automatically in a derived store

A SvelteKit store that automatically converts slugs to UUIDs from the URL path parameters.

Google Apps Script: google.script.run vs. doGet/doPost Endpoints

Learn about the different options for making API calls in Google Apps Script web apps: `google.script.run` and GET/POST endpoints (`doGet` and `doPost`). Understand their strengths and weaknesses to choose the best approach for your project.

Drive File Get Blob and Scopes in Google Apps Script

Working with binary files like PDFs or images in Google Drive with Google Apps Script can be a bit tricky due to scopes. Here is a comparison of the three main ways to get the Blob of a file in Google Drive and the scopes required.

My Debian development environment setup

Setting up a development environment on Debian with Docker and VSCode remote.

Key Value Store Options in Google Apps Script

A comparison of key-value store options in Google Apps Script, including PropertiesService, CacheService, Firestore, and Sheet Developer Metadata.

Google Cloud Region Latency in Google Apps Script

Ping results to Google Cloud regions and short code snippet demonstrating how to measure latency from Google Apps Script.

Optimizing Parallel Jobs in a Github Workflow

A pattern for persisting the workspace files between parallel jobs in a GitHub Workflow.

Apps Script V8 Runtime Limitations

A comparison of the WinterCG Minimum Common Web Platform API draft with the Apps Script V8 runtime.

Google Next 24 - Rust, Python, and WASM in Apps Script

I will be giving a talk at Google Next 2024 on how to use Rust, Python and WASM to extend Google Apps Script.

Promises, async and await in Google Apps Script

Google Apps Script is based on the V8 engine and supports the use of Promises, async and await. However, there are almost no APIs available that are asynchronous except for the WebAssembly API.

Cloudflare workers with Wrangler for dev, staging, and prod

Deploying Cloudflare workers to dev, staging, and prod with Wrangler and automatically promoting with GitHub actions.

Google Calendar - Usage Limits Exceeded

Cleanup repositories on GitHUb by deleting old forks.

Embed images from Google Drive in your website

Google Drive broke the ability to embed images with the /uc path. Here's how to embed images from Google Drive in your website.

Using Firestore in Apps Script

Firestore can be a powerful tool when using Apps Script. This post shows how to use the [Firestore REST API] in Apps Script.

Apps Script Service Account Impersonation

Avoid downloading private service account keys by using impersonation in Apps Script to obtain access tokens.

Optimized Dockerfile for Rust

A simple Dockerfile for a Rust project that caches dependencies and uses a minimal Debian image.

Generating Text with Gemini Pro in Apps Script

A short code snippet demonstrating how to generate text with the Gemini Pro Rest API in Apps Script.

Memoization in Apps Script

A generic Apps Script memoization function can be written to cache any function.

Using Vertex AI in Apps Script

How to use the Vertex AI API in Apps Script to make predictions on your data or use it in any of your other Google Workspace processes.

Building a Google Chat App with n8n

I created a n8n workflow to implement a Google Chat App that translates messages.

Combining Google Workspace Add-ons and Editor Add-ons

Both Add-on types have their own strengths and weaknesses. Combining them could be a powerful way to build Add-ons for Google Workspace but with some caveats.

Rust Compiler Whack-a-Mole

Playing whack-a-mole with the rust compiler is both frustrating and a great learning experience.

Using Cloudflare Pages and Functions for email magic links

This blog post demonstrates how to implement email magic links for a login page using Cloudflare Pages, Cloudflare Functions, and Sendgrid. It provides code examples and explanations for each step of the process, including form creation, token generation and validation, session management, and user authentication.

Google User Credentials in non-interactive workflows

Using an offline Oauth2 flow to get Google user credentials for use as application default credentials in APIs that do not allow service accounts or API keys and require user credentials.

Verify a Google access token

A simple endpoint to verify a Google access token

Automator's Hole

There is a point between manual tasks and automation where nothing gets done.

Track all Firestore write activity in Firestore

Capture all user activity in a Firestore collection using Audit Logs, Pub/Sub, and Cloud Functions.

Delete Old GitHub Forks

Cleanup repositories on GitHUb by deleting old forks.

Strongly Typed Yup Schema in TypeScript

A basic pattern for strongly typing Yup schemas in TypeScript using conditionals.

Caching Playwright Binaries in GitHub Actions

A simple strategy to effectively speed up use of Playwright in GitHub Actions with caching.

Environment Variables in GitHub Docker build-push-action

A basic pattern for passing environment variables to the docker/build-push-action from a GitHub secret.

Using Google Container Registry, Docker Buildx, and GitHub Actions

A pattern for authenticating to gcr.io from docker/build-push-action.

Strava Webhooks with Stokehook.com

An app I built using Svelte, Firebase, and the Strava API.

Unwatch All Repositories in a GitHub Organization

Using the GitHub CLI to unsubscribe from repositories.

Automatically Approving and Merging Dependabot Pull Requests

A simple GitHub workflow to automatically approve and merge Dependabot pull requests.

Rebasing All Dependabot Pull Requests

Short code snippet showing how I rebased all Dependabot pull requests across a GitHub org.

What is DevRel?

DevRel is a lot things: marketing, engineering, product management, support; my experience as a Developer Relations Engineer at Google.

Eleventy Related Posts Using TF-IDF

Automating related posts in Eleventy with term frequency-inverse document frequency and eleventy-plugin-related.

GitHub Workflow to Sync Branches

It is easy to sync branches in a GitHub workflow without using a third party GitHub Action.

Google Maps React Wrapper

A wrapper for loading Google Maps JavaScript in React

WMS Layer on Google Maps

Instructions for adding a WMS Layer to Google Maps