I have a Google Sheet which has a tab which produces values in Beeminder format (“day value”, e.g. “7 5” if I were trying to log a value of 5 for today). So far I’ve been copy/pasting manually into Beeminder, which isn’t that hard, but I just created a similar tab on another spreadsheet and it’s getting annoying, and a computer should be able to do this for me.
Anyone know an easy way to do this? (If it takes hours to set up I doubt it will ever pay back the time investment.) The only wrinkle I can think of is that each of the spreadsheets will reset (become empty) once in a while, so the solution needs a way to not repeatedly post the same data points, but still notice when the sheet has been reset. I can easily make the cell values have the full date (“2016 2 7 5”) to help with this; in fact, that’s what I already did in the 2nd sheet.
Additionally: I can promise there will only ever be one value for a day, but that value might change. So what I need is something that periodically scans my sheet and sets the Beeminder value for each day that’s represented on the sheet to whatever is on the sheet, overriding the previous value in Beeminder if any.
i used zapier for google sheets + beeminder way back in the stone ages (i.e. early 2015). i had no trouble with setting it up & sending values to beeminder, but i wasn’t sending the date, so no comments on that piece of things. (i can think of a couple reasons that might be the more difficult part of the request, no matter what solution you come up with!) and it looks like they’ve got an “updated row” trigger as well, which should catch your changing values.
the caveat is that zapier’s free plan is limited and you might hit that cap, depending on your frequency of usage.
If you’re on a premium plan, you can change the goal’s aggregation method to be ‘last’. This would mean that all your datapoints get added to the goal, but only the most recent one counts as far as being-on-the-road is concerned.
Conversely, the API lets you update the value of an existing datapoint. But that requires coding… if you want to see an example, my dailies perl script updates datapoints.
Hmm. Zapier might work but I think I’d be skating the edge of the free plan, and if this works well for me I’ll probably want to add more spreadsheets later and go over. And $20/month is very steep for the value I’d get from this.
I do have Plan Bee, so the aggregation method will take part of that part at least – thanks! Though I still don’t think I’d want to dump the entire contents of the spreadsheet into Beeminder every 15 minutes or something; that would result in an absurd number of duplicate data points.
I do also know how to program, but I don’t think there’s any way I can set that up in 119 minutes or less (if we take my “hours” hyper-literally), and I don’t really want to think about where to host it. I just want something to copy/paste from a spreadsheet into Beeminder like I’m doing manually
If you’re on Mac or Linux you could easily use the beemind shell script: https://github.com/Insti/beemind.sh
Hmm… actually it’s quite easy to send email from Sheets. And to schedule script execution (I can do daily). Now I just need to figure out the right email format to get Beeminder to enter the data.
body content should be identical to whatever you’re pasting into the website’s data box. If you find something that works differently between the email bot and the website, shout, 'cause that sounds bug-like…
If your email integration adds a signature, make sure there’s some whitespace and/or a — or something between your datapoints and the signature, to encourage the bot to not get confused and call in the humans to help.