Autodrive offers some simple output functionality for creating csv and json files from the data in your ~autodrive.range.Range
, ~autodrive.tab.Tab
, and ~autodrive.gsheet.GSheet
objects.
Outputting the fetched data for ~autodrive.range.Range
and ~autodrive.tab.Tab
objects is quite easy, all you really need to do is specify a path to write to:
tab.to_csv("path/to/your/file.csv")
# Optionally you can insert a header row:
tab.to_csv("path/to/your/file.csv", header=["column_a", "column_b", "column_c"])
tab.to_json("path/to/your/file.json")
# For to_json, you can specifiy the header row manually or with an index
# in the data:
tab.to_json("path/to/your/file.json", header=["column_a", "column_b", "column_c"])
tab.to_json("path/to/your/file.json", header=2) # for the data in the 3rd row:
Outputting ~autodrive.gsheet.GSheet
objects is only slightly more complicated. If you only specify a path to a directory (not a file), then every ~autodrive.tab.Tab
in the ~autodrive.gsheet.GSheet
will be output as individual files. For example, if you have an object with three tabs (named Sheet1
, Sheet2
, and Sheet3
), then this will output 3 files:
import os
gsheet.to_csv("path/to/a/directory")
gsheet.to_json("path/to/a/directory")
os.listdir("path/to/a/directory")
"""
[
"path/to/a/directory/Sheet1.csv",
"path/to/a/directory/Sheet1.json",
"path/to/a/directory/Sheet2.csv",
"path/to/a/directory/Sheet2.json",
"path/to/a/directory/Sheet3.csv",
"path/to/a/directory/Sheet3.json",
]
"""
By default, the files will be named the same as the corresponding tab titles, but you can override this behavior:
# Only the tab names you pass will be overridden:
gsheet.to_csv(
"path/to/a/directory",
filename_overrides={"Sheet1": "sums", "Sheet2": "averages"}
)
gsheet.to_json(
"path/to/a/directory",
filename_overrides={"Sheet1": "sums"}
)
os.listdir("path/to/a/directory")
"""
[
"path/to/a/directory/sums.csv",
"path/to/a/directory/sums.json",
"path/to/a/directory/averages.csv",
"path/to/a/directory/Sheet2.json",
"path/to/a/directory/Sheet3.csv",
"path/to/a/directory/Sheet3.json",
]
"""
You can also simultaneously limit the specific tabs output and/or set the header(s) output with each file:
# If you specify any Tab names as kwargs, only the tabs you specify will be
# output:
gsheet.to_csv(
"path/to/a/directory",
filename_overrides={"Sheet1": "sums"},
Sheet1=["column_a", "column_b", "column_c"],
Sheet2=None # use None to output Tabs even if you don't supply a header.
)
gsheet.to_json(
"path/to/a/directory",
Sheet3=["column_a", "column_b", "column_c"],
Sheet2=0 # For to_json you MUST specify a header, or pass an index.
)
os.listdir("path/to/a/directory")
"""
[
"path/to/a/directory/Sheet1.csv",
"path/to/a/directory/Sheet2.csv",
"path/to/a/directory/Sheet2.json",
"path/to/a/directory/Sheet3.json",
]
"""