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.0.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.0-py3-none-any.whl (9.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: tiller_sheets_export-0.1.0.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.0.tar.gz
Algorithm Hash digest
SHA256 82d70b36410ffd747e54ab98b16ff76ee894008e92d0f98c9c524ebb83b7271e
MD5 2362dcee655d0a37dcdd5e675508693b
BLAKE2b-256 0ae66407c491af29cd3e27aa2b06395b022f6e92db2acc3f563d32b3c14ef495

See more details on using hashes here.

File details

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

File metadata

  • Download URL: tiller_sheets_export-0.1.0-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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8d120cbd31eeee3650a27fd66d9e8eb1ef702fc0d94addac790e234b7a63dabe
MD5 92caca4a3ad919dfdc2b71c29b75da90
BLAKE2b-256 2ac78718cfb93c379461f203cc3d7718e51a970f2fbdab2e9baf8aecb73e83e3

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