No-boilerplate, async and typed Google Sheets access.
Project description
SlySheets for Python
🚧 This library is an early work in progress! Breaking changes may be frequent.
🐍 For Python 3.10+
No-boilerplate, async and typed Google Sheets access. 😋
pip install slysheets
This library does not have full coverage. Currently, the following topics are supported:
- Editing sheet cells
- Reading sheet metadata
You can use SlyAPI to directly grant user tokens using the command line, covering the whole OAuth 2 user grant process after getting client credentials from Google.
Example usage:
import asyncio
from SlySheets import *
async def main():
auth = OAuth2('test/app.json', 'test/user.json')
spreadsheet = await Spreadsheet(auth, '1arnulJxyi-I6LEeCPpEy6XE5V87UF54dUAo9F8fM5rw')
page = spreadsheet.page('Sheet 1')
print(page.link()) # https://docs.google.com/spreadsheets/d/1arnulJxyi-I6LEeCPpEy6XE5V87UF54dUAo9F8fM5rw/edit#gid=0
# A1 notation
a1 = await page.cell('A1')
print(F"Cell A1: {a1}") # Cell A1: Foo
# zero-indexed rows
first_row = await page.row(0)
print(F" | {first_row[0]:6} | {first_row[1]:6} |") # | Foo | Bar |
# header-indexed columns
foos = await page.column_named('Foo')
print(F"Foos: {foos}") # Foos: [1, 2, 3, 26]
# zero-indexed columns
foos_2 = await page.column(0)
assert foos == foos_2
for row in await page.rows_dicts(1, 4):
# index result by header
print(F" | {row['Foo']:6} | {row['Bar']:6} |") # | 1 | a | etc...
# append and extend, of course
await page.append([0, 'u'])
await page.append_dict({'Foo': 1, 'Bar': 'v'})
await page.extend([[3, 'w'], [4, 'x']])
await page.extend_dicts([{'Foo': 5, 'Bar': 'y'}, {'Foo': 6, 'Bar': 'z'}])
# TODO: consider not using slices to simplify
# await sheet.delete(slice(-2, None))
await page.delete_range('A6:B11')
# use spreadsheet object to update a specific page with A1 notation
await spreadsheet.set_cell("'Sheet 1'!E3", 'Hello World!')
# dates
today = await page.date_at_cell('D5') # =TODAY()
assert isinstance(today, datetime)
print(F"It is now {today.isoformat()} (timezone: {spreadsheet.tz})")
# batch edits
async with sheet.batch() as batch:
batch.set_range("C2:D3", [[0, 1], [2, 3]])
asyncio.run(main())
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
SlySheets-0.2.0.tar.gz
(10.0 kB
view details)
Built Distribution
File details
Details for the file SlySheets-0.2.0.tar.gz
.
File metadata
- Download URL: SlySheets-0.2.0.tar.gz
- Upload date:
- Size: 10.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.11.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 43e97a09b029b17dac99d0b611fdecb3bccd00f25e5b3995d168ad95f576cf13 |
|
MD5 | 912fcbf618b92d7b5671942dbb1defb0 |
|
BLAKE2b-256 | a472b0bd9ce5de333ec09df808f06c95208828c9fd629d0f672a122073cf70aa |
File details
Details for the file SlySheets-0.2.0-py3-none-any.whl
.
File metadata
- Download URL: SlySheets-0.2.0-py3-none-any.whl
- Upload date:
- Size: 8.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.11.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c8f8bac7024272bd960fc52dedcbad561c77da308e147c5609f64d76427e543d |
|
MD5 | 63831e359b0acdeaeb35c38e30e3af13 |
|
BLAKE2b-256 | 7041988a207c4f4f73efef5674e48b4583a8fd2750dddc26ba60a7297044db4e |