Simple Output
Autodrive offers some simple output functionality for creating csv and json files
from the data in your Range
, Tab
,
and GSheet
objects.
Outputting Ranges and Tabs
Outputting the fetched data for Range
and
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 GSheets
Outputting GSheet
objects is only slightly more
complicated. If you only specify a path to a directory (not a file), then every
Tab
in the 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",
]
"""
Overriding Filenames
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",
]
"""
Headers and Tab Subsets
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",
]
"""