points by paulfitz 4 days ago | 0 comments
It is straight Python. Yes the spreadsheet habit of making functions SHOUT does look weird mixed in with Python syntax.
PREVIOUS returns a record, then .Running_Balance pulls out one field of it.
[–] chii 4 days ago
[–] whizzter 4 days ago
What parts are Python and how does one know where the classic Spreadsheet functionality ends and Python starts ?
[–] dsagal 4 days ago
"classic Spreadsheet functionality" is just familiar Excel functions with uppercase names implemented in Python, right here: https://github.com/gristlabs/grist-core/tree/main/sandbox/gr...
E.g. UPPER($A) is just a function that calls $A.upper(). And $A is just syntactic sugar over rec.A.
PREVIOUS() is only special in that it automatically creates an index, which is important for efficiency. But generally you can look up a set of records and write multi-line Python code to do whatever you want with it and return a value. And it all runs in a sandbox with no access to anything except this document's data.
[–] whizzter 3 days ago
Oh, so this is something Grist specific rather than something inherited from Excel? (I remember reading sometime back that MS was replacing VBA with Python)
[–] librasteve 4 days ago
that’s why https://omasheet.org has its own DSL. that said it’s no doubt got some wrinkles so I’ll be reviewing all the comments on this hn post very carefully
[–] whizzter 3 days ago
Not entirely uninteresting, wrote some thoughts in your main comment thread.
I reckon it makes more sense to return a table, and then have an index lookup in that table: e.g., index(PREVIOUS(blah_blah), column). Then you can also use an indirection to choose which column from another cell if desired.
This is how google finance in sheets returns some data (like exchange rates, iirc).