Unofficial tool to fetch Tiller financial data from Google Sheets as Arrow, DuckDB, or Parquet
Project description
tiller-sheets-export
Unofficial tool to fetch Tiller financial data from Google Sheets as Arrow, DuckDB, or Parquet.
Note: This is an unofficial project and is not affiliated with, endorsed by, or connected to Tiller HQ.
Auth
This tool uses Application Default Credentials. You will need a Google Cloud project with the Sheets API enabled.
# 1. Login to Google Cloud
gcloud auth login
# 2. Setup credentials with Sheets scope
gcloud auth application-default login --scopes=https://www.googleapis.com/auth/spreadsheets.readonly
# 3. Set your project (replace <PROJECT_ID> with your actual GCP project ID)
gcloud auth application-default set-quota-project <PROJECT_ID>
gcloud services enable sheets.googleapis.com --project=<PROJECT_ID>
Alternatively, set GOOGLE_APPLICATION_CREDENTIALS to the path of a service account JSON key.
Installation
CLI Installation
Linux/macOS permanent install with uvx.sh (installs uv + tiller-sheets-export):
curl -LsSf uvx.sh/tiller-sheets-export/install.sh | sh
tiller-sheets-export "https://docs.google.com/spreadsheets/d/YOUR_ID/edit"
Or, if you have uv already installed:
uvx tiller-sheets-export "https://docs.google.com/spreadsheets/d/YOUR_ID/edit"
Library Installation
uv add tiller-sheets-export
CLI Usage
tiller-sheets-export "https://docs.google.com/spreadsheets/d/YOUR_ID/edit"
This generates data/processed/transactions.parquet and data/processed/categories.parquet.
Library Usage
from tiller_sheets_export import TillerData
data = TillerData.fetch(spreadsheet_url="https://docs.google.com/spreadsheets/d/YOUR_ID/edit")
# To Arrow
data.transactions.to_arrow()
data.categories.to_arrow()
# To DuckDB
data.transactions.to_duckdb()
data.categories.to_duckdb()
# To pandas
data.transactions.to_arrow().to_pandas()
Query with DuckDB
import duckdb
con = duckdb.connect()
transactions = data.transactions.to_duckdb(con=con)
categories = data.categories.to_duckdb(con=con)
con.sql("""
SELECT t.date, t.description, t.amount, c.group, c.type
FROM transactions t
LEFT JOIN categories c ON t.category = c.category
ORDER BY t.date DESC
""").show()
Google Colab
from google.colab import auth
auth.authenticate_user()
!pip install tiller-sheets-export
from tiller_sheets_export import TillerData
data = TillerData.fetch(spreadsheet_url="https://docs.google.com/spreadsheets/d/YOUR_ID/edit")
data.transactions.to_arrow().to_pandas()
Schema
Transactions
See Tiller's documentation for column descriptions.
| Column | Type |
|---|---|
| date | date |
| description | string |
| category | string |
| amount | decimal(19,2) |
| account | string |
| account_number | string |
| institution | string |
| month | date |
| week | date |
| transaction_id | string |
| account_id | string |
| check_number | string |
| full_description | string |
| date_added | timestamp |
| import_tag | string |
| merchant_name | string |
| category_hint | string |
| note | string |
| tags | list<string> |
| categorized_date | timestamp |
| statement | string |
| metadata | string |
Categories
| Column | Type |
|---|---|
| category | string |
| group | string |
| type | string |
| hide_from_reports | bool |
| tags | list<string> |
Data Quality
Automatic validation logs warnings for type mismatches, missing categories, and empty critical fields. Invalid values are coerced to NULL.
Other Tiller Projects
- https://github.com/peterkeen/ledger_tiller_export - Tool to export transactions from Tiller into Ledger.
- https://github.com/basnijholt/tiller-streamlit - Streamlit dashboard for Tiller data.
- https://github.com/jackstein21/tiller-mcp-server/tree/main - MCP server exposing Tiller data.
- https://github.com/clomok/finance-visualizer/ - Browser-based visual data explorer.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tiller_sheets_export-0.1.2.tar.gz.
File metadata
- Download URL: tiller_sheets_export-0.1.2.tar.gz
- Upload date:
- Size: 6.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8e468a1846370b04511f0136cbdd3395c75d8a04175e041aff5b03192604a1ad
|
|
| MD5 |
b931b232fb3b45f74a40362ca05e9d75
|
|
| BLAKE2b-256 |
ee1917ff0d5ff7df170d337e2ba1d0cbe8f625e3fd7b6389c13bde4b576ab864
|
File details
Details for the file tiller_sheets_export-0.1.2-py3-none-any.whl.
File metadata
- Download URL: tiller_sheets_export-0.1.2-py3-none-any.whl
- Upload date:
- Size: 9.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.26 {"installer":{"name":"uv","version":"0.9.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a8c2134de147dc105a38f74c81a0ba3411383a90aa7ceb5ac802cfae7f0ca953
|
|
| MD5 |
42eeadbab502f57eb5ec5980f1850f4d
|
|
| BLAKE2b-256 |
46197a4e8550c7e27365b222b03afba48f82b9e8e5f72c61bf92856c25ed6830
|