This is a simple web server that can redirect a pre-defined set of URLs in Google Sheets. All you need to do is define a Google Sheets like the following, and deploy a simple app just by clicking around.
shortcut | url |
---|---|
gh |
https://github.com/ahmetb |
yt |
https://www.youtube.com/watch?v=dQw4w9WgXcQ |
cv |
https://docs.google.com/document/d/1c97PrqTFqiMpannv2/edit |
resume |
/cv |
Costs: This can be deployed to Google Cloud Run and run for free thanks to generous free tier (+Google Sheets is free with a Gmail account as well).
This redirector also supports path additions on top of base URLs, for example, with the sheet row:
shortcut | url |
---|---|
gcp |
https://github.com/GoogleCloudPlatform |
The go.ahmet.dev/gcp/golang-samples
will be redirected to
https://github.com/GoogleCloudPlatform/golang-samples
.
-
Create a new Google Sheet: https://sheets.new.
-
Add two columns, first column is the "shortcut", the second column is the "url" to redirect the user. (see example)
-
Save the ID of your Sheet from the URL (it’s a random string that looks like
1SMeoyesCaGHRlYdGj9VyqD-qhXtab1jrcgHZ0irvNDs
). -
Click to deploy to Cloud Run, and provide your spreadsheet ID while deploying:
-
Go to https://console.cloud.google.com/run, click on
sheets-url-shortener
service. Find the email address written in the "Service Account" section. -
Go to your Google Sheets, click "Share" and give this email address "Viewer" access on your sheet.
-
Go to https://console.developers.google.com/apis/api/sheets.googleapis.com/overview and make sure the Google Sheets API is enabled.
-
(Optional) If you want to use a custom domain like
go.ahmet.dev
, go to https://console.cloud.google.com/run/domains and map thesheets-url-shortener
to your custom domain!
This server can be configured with these following parameters:
Environment Variable | Description |
---|---|
SHEET_NAME |
(optional) If you have multiple sheets in a spreadsheet, specify the sheet name. |
CACHE_TTL |
(optional) how frequently the spreadsheet must be reloaded (default: 5s ) |
HOME_REDIRECT |
(optional) which url to redirect when root url (/ ) is visited |
LISTEN_ADDR |
(optional) which network address to listen on (default "" which means all interfaces) |
PORT |
(optional) http port to listen on (default 8080 ). |
This is not an official Google project. It's distributed as-is under Apache 2.0 License. See LICENSE.