Skip to main content

Unofficial tool to fetch Tiller financial data from Google Sheets as Arrow, DuckDB, or Parquet

Project description

tiller-sheets-export

PyPI

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tiller_sheets_export-0.1.1.tar.gz (6.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tiller_sheets_export-0.1.1-py3-none-any.whl (9.0 kB view details)

Uploaded Python 3

File details

Details for the file tiller_sheets_export-0.1.1.tar.gz.

File metadata

  • Download URL: tiller_sheets_export-0.1.1.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

Hashes for tiller_sheets_export-0.1.1.tar.gz
Algorithm Hash digest
SHA256 13ca87688d1fadac4d12253cc2299cd04dc5b93210e1c1c824f68c8a756a568b
MD5 38aba36ed187c50fe05d386432083a36
BLAKE2b-256 8d394dcbbe2165bba49e7cad6745b879a23a753064ea8b8ceda1f5c092c3c2b9

See more details on using hashes here.

File details

Details for the file tiller_sheets_export-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: tiller_sheets_export-0.1.1-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

Hashes for tiller_sheets_export-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 8daa9cf8bf6ec33243e18be27b9a3c9578a5a3729751148c6e8c2b9599d8b188
MD5 f09fd20a7725fd7b46d6e83cdb6efcbd
BLAKE2b-256 3d3ce03635ea8496ab0f9f57ac1ab9f5301e849298131501dc511485a66860bc

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page