
Tosheets, utility to send stdin to Google sheets - kren1
https://github.com/kren1/tosheets
======
notaboutdave
This is pretty great. It looks like it automatically writes to the next
logical empty cell.

    
    
      curl https://www.bitstamp.net/api/v2/ticker/btcusd \
      | grep 'last": *"\d*\.\d*' -o | grep '\d*\.\d*' -o \
      | tosheets -c A1 --spreadsheet=foo
    

^ That will append the last BTC price to column A of sheet 'foo'

~~~
sillysaurus3
Can I nerd out over how unreasonably effective regexps are?

That's basically a mini JSON parser in 48 characters.

~~~
gcr
With a domain-specific tool, it's even easier though.

    
    
        curl ... | jq -r .last

~~~
sillysaurus3
Sure. But you can't use jq to scrape arbitrary websites, for example. :)

~~~
dpflan
Jeff Atwood has an entertaining post about parsing HTML with regular
expressions:

[https://blog.codinghorror.com/parsing-html-the-cthulhu-
way/](https://blog.codinghorror.com/parsing-html-the-cthulhu-way/)

“”” That's right, if you attempt to parse HTML with regular expressions,
you're succumbing to the temptations of the dark god Cthulhu's … er … code.
“””

~~~
alexozer
Let's not forget about this masterpiece:
[https://stackoverflow.com/a/1732454/864310](https://stackoverflow.com/a/1732454/864310)

~~~
dpflan
Indeed, its quality cannot be ignored and must be shared; it’s referenced in
the Atwood post.

------
thesandlord
I wrote something similar that will send stdin to Google Stackdriver Logging.

[https://github.com/thesandlord/logpipe](https://github.com/thesandlord/logpipe)

~~~
troydavis
In the same vein, pipe anything to `logger` to send it to the local syslogd
(and if configured, to remote destinations).

For example, this uses datamash
([https://www.gnu.org/software/datamash/](https://www.gnu.org/software/datamash/))
to sum column 2 of a CSV ("-t,"), then log the output:

    
    
        datamash -t, sum 2 < stuff.csv | logger

~~~
thesandlord
Yeah logger or fluentd are definitely better long term solutions. I wanted
something that was no frills and minimal config for ad-hoc situations. Other's
on my team found it useful so I open sourced it.

Bonus: In depth code review for this package:
[https://youtu.be/c5ufcpTGIJM](https://youtu.be/c5ufcpTGIJM)

------
fiatjaf
Amazing.

We need more utilities like this that help integrate apps and web services
between themselves and the Unix environment.

"Pipes to the web" should be like this. Not bloted a UI with forms that
perform premade actions with your web apps data.

------
tardo99
They mean stdout, right?

~~~
forkerenok
Depends on from where you look :)

It is stdout for the previous process in the pipeline and stdin for the
tosheets itself.

EDIT: Tosheets -> tosheets

~~~
jwilk
tosheets just reads stuff from stdin. It doesn't care if it's attached to a
pipe or not. It might be that there's no "previous process" at all.

------
michaelangerman
very cool

------
O_H_E
Interestingly Nice

Your project ruins my English

------
nine_k
Nope, it sends _stdout_ to sheets. Getting input from sheets would be cool,
too.

~~~
Naac
It looks to me like you're being downvoted, but what you're saying looks
correct to me. $PROGRAM sends to stdout what google sheets reads from "stdin"

~~~
reificator
When you run this utility, it forwards stdin to Google Sheets.

Should you pipeline stdout from somewhere else to this utility, the contents
of that stdout will be forwarded to Google Sheets.

It is correct to say either that you are forwarding stdin or that you are
forwarding stdout. It is therefore _not_ correct to say that it does _not_
forward stdin, because the source code explicitly refers to stdin. That's
likely the reason for the [Fight Club]s the GP is receiving.

