Skip to content

Google Sheets

sheets writer allows you to save GarfReport to Google Sheets.

Important

To save data to Google Sheets install garf-io with Google Sheets support

pip install garf-io[sheets]

garf uses gspread to write data to Google Sheets needs to be configured.

garf query.sql --source API_SOURCE \
  --output sheets
from garf.core import report
from garf.io.writers import sheets_writer

# Create example report
sample_report = report.GarfReport(results=[[1]], column_names=['one'])

writer = sheets_writer.SheetsWriter()
writer.write(sample_report, 'query')

Parameters

spreadsheet_url

By default reports are saved to a new spreadsheet. You can overwrite it with spreadsheet_url parameter.

garf query.sql --source API_SOURCE \
  --output sheets \
  --sheets.spreadsheet_url=SPREADSHEET_URL
from garf.core import report
from garf.io.writers import sheets_writer

# Create example report
sample_report = report.GarfReport(results=[[1]], column_names=['one'])

writer = sheets_writer.SheetsWriter(spreadsheet_url=SPREADSHEET_URL)
writer.write(sample_report, 'query')

share_with

If you want to share created or existing spreadsheet, you can specify email(s) via share_with parameter.

garf query.sql --source API_SOURCE \
  --output sheets \
  --sheets.share_with=your@email.com
from garf.core import report
from garf.io.writers import sheets_writer

# Create example report
sample_report = report.GarfReport(results=[[1]], column_names=['one'])

writer = sheets_writer.SheetsWriter(share_with='your@email.com')
writer.write(sample_report, 'query')

is_append

By default new report overwrites old report in worksheets. You can adjust this behaviour with is_append parameter.

garf query.sql --source API_SOURCE \
  --output sheets \
  --sheets.is_append
from garf.core import report
from garf.io.writers import sheets_writer

# Create example report
sample_report = report.GarfReport(results=[[1]], column_names=['one'])

writer = sheets_writer.SheetsWriter(is_append=True)
writer.write(sample_report, 'query')

credentials_file

garf uses gspread to write data to Google Sheets which expects credentials file in ~/.config/gspread folder.

You can adjust it via credentials_file parameter.

garf query.sql --source API_SOURCE \
  --output sheets \
  --sheets.credentials_file=/path/to/credentials.json
from garf.core import report
from garf.io.writers import sheets_writer

# Create example report
sample_report = report.GarfReport(results=[[1]], column_names=['one'])

writer = sheets_writer.SheetsWriter(credentials_file='/path/to/credentials.json')
writer.write(sample_report, 'query')

auth_mode

By default garf will try to authenticate with user credentials You can overwrite it via auth_mode parameter (which can be either oauth or service_account)

garf query.sql --source API_SOURCE \
  --output sheets \
  --sheets.auth_mode=service_account
from garf.core import report
from garf.io.writers import sheets_writer

# Create example report
sample_report = report.GarfReport(results=[[1]], column_names=['one'])

writer = sheets_writer.SheetsWriter(auth_mode='service_account')
writer.write(sample_report, 'query')