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

Uploaded Python 3

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

Hashes for tiller_sheets_export-0.1.2.tar.gz
Algorithm Hash digest
SHA256 8e468a1846370b04511f0136cbdd3395c75d8a04175e041aff5b03192604a1ad
MD5 b931b232fb3b45f74a40362ca05e9d75
BLAKE2b-256 ee1917ff0d5ff7df170d337e2ba1d0cbe8f625e3fd7b6389c13bde4b576ab864

See more details on using hashes here.

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

Hashes for tiller_sheets_export-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 a8c2134de147dc105a38f74c81a0ba3411383a90aa7ceb5ac802cfae7f0ca953
MD5 42eeadbab502f57eb5ec5980f1850f4d
BLAKE2b-256 46197a4e8550c7e27365b222b03afba48f82b9e8e5f72c61bf92856c25ed6830

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