Modules
Google Sheets from Elixir, as values.
A1 notation: the 'Q1 costs'!B4:C9 strings Google Sheets speaks.
What a backend has to do, and what it can promise.
A cell: where it is, what it holds, how it looks.
What a formula worked out to, when it did not work out.
How to reach one Google spreadsheet: which one, with which credentials.
Where a cell is: a 0-indexed row and col, and optionally the sheet
(tab) it belongs to.
The error behind every {:error, _} Sheetshow returns and every ! variant
raises.
Ops as Google Sheets API requests: the body of one spreadsheets.batchUpdate.
An append-only tab, and the first of the two ways to keep data on a sheet.
One row of a log: an id, what it says, and whether it says the row is gone.
A spreadsheet in a map: the backend that needs no network.
Sending somebody to a Google consent screen, and turning what comes back into
a Sheetshow.UserAccount you can keep.
What a backend is asked to do.
Adds a tab. Adding one that already exists is an error, here and at Google, so a plan says what it expects to find.
Adds rows below the last row with data on the sheet.
Removes rows; everything below moves up.
Removes a tab, and everything on it.
Writes a run of cells: one sheet, one row, consecutive columns, no gaps.
Sets the width of columns or the height of rows, in pixels.
A rectangle of cells on one sheet: Costs!A2:C10, a whole column, a whole
sheet.
What a row means: a keyword list of {name, type}, and the casting either
way across it.
A Google service account, as a value: what the key file holds, and the signed
assertion that trades it for a Sheetshow.Token.
Where a spreadsheet file lives, and how to read and write it.
A spreadsheet file on the machine this is running on.
A spreadsheet file on a WebDAV server: Nextcloud, ownCloud, or anything else that speaks it.
How a cell looks: a plain map with atom keys, so styles compose with
Map.merge/2 and read well when inspected.
A tab of mutable rows, and the second of the two ways to keep data on a sheet.
One thing to do to a table: a value, made by Sheetshow.Table.insert/2,
Sheetshow.Table.update/2, Sheetshow.Table.delete/2 or
Sheetshow.Table.restore/1.
One row of a table: an id, what it says, and where on the tab it sits.
A table as it was when you read it: the rows, and where each of them sat.
An access token and the moment it stops working.
Identifiers that sort by the time they were made.
A person's own Google account, as a value: the app you registered, and the refresh token they gave it.
What a cell can hold.
Which spreadsheet, and which backend reaches it.
An .xlsx workbook, as cells.