diegomanuel / binance-to-google-sheets

Google Spreadsheets add-on to get data directly from Binance API without any intermediaries! :rocket:
GNU General Public License v3.0
426 stars 76 forks source link
binance-api bitcoin cryptocurrency-exchanges financial-data google-spreadsheets trade

Binance to Google Sheets!

A lightweight Google Spreadsheets Add-On to GET data directly from Binance API without any intermediaries!

Since Binance decided to block API requests coming from restricted countries like USA (from which the Google servers in where our spreadsheets run are located), you'll probably need a proxy.
Check Binance to Google Sheets Add-On Proxy for a basic proxy server implementation that I did for myself and is currently working fine. It may be useful for you too!
See the README.md for further details.

This add-on is basically an API client specially hand-crafted to work between Google Spreadsheets and Binance.
By using the BINANCE() formula in your spreadsheet, you can get data fetched from Binance API like:

At first glance, NO Binance API key is needed to call public endpoints like current prices, historic prices and 24h stats.
It only requires a Binance API key for private endpoints like account info and open/done/table orders, but a READ-ONLY API key is enough for everything to work.
In deed, I personally recommend to generate a READ-ONLY API key at Binance site here.
It does NOT need write/trade access in ANY way to properly work with all its features, so don't give extra permissions if they aren't needed!

I think and hope that many of you will find it as useful as it is for myself.
Enjoy, cheers! :beers:

How can I use it in my Google Spreadsheets?

First of all, open your desired Google Spreadsheet and configure it properly:

  1. Go to File -> Spreadsheet settings.
  2. Under the Calculation tab set the Recalculation combobox to On change and every minute.
  3. Hit Save settings button and continue with the steps below!

The quick'n easy way for everybody

Just download the latest BINANCE.gs all-in-one file + appsscript.json and copy & paste its contents following these steps:

  1. With your desired Google Spreadsheet opened, go to Tools -> Script editor.
    • It should open an editor in a new page with a Code.gs file containing an empty function.
    • Remove any contents from Code.gs and save the project at File -> Save. Give any name you want.
  2. Go to project properties and make sure to select Show "appsscript.json" manifest file in editor checkbox.
  3. Go back to code editor, select the Code.gs file and paste the contents from the downloaded BINANCE.gs file.
  4. Do the same for appsscript.json and optionally set your desired timezone.
  5. Save the project again and refresh/reload your Google Spreadsheet (hit F5 on the browser).
    • Once reloaded, you should see a little message box (toast) at the bottom-right corner.
  6. Go to Binance item at your spreadsheet's main menu and click on the Authorize add-on! item.
  7. A Google's dialog should appear asking for permissions, proceed with all the steps and click Allow.
    • The popup will close and nothing will change on your spreadsheet yet!
  8. Once the add-on is authorized, repeat step 5 (click Authorize add-on! again) and voila!

If you are a developer =]

You will need node and clasp in order to apply the add-on to your Google Spreadsheets.

  1. Install node and clasp following their simple setup guides.
  2. Clone the repo and login to your Google account with clasp by running: clasp login.
  3. Get the Script ID for your desired Google Spreadsheet.
    1. With your Google Spreadsheet open, go to Tools -> Script editor.
    2. At the Google Script screen, go to File -> Project properties.
    3. The needed ID is the one under the Script ID label!
    4. Make sure to select Show "appsscript.json" manifest file in editor checkbox.
  4. Just for the first time, run the target make setup SCRIPT_ID=my-script-id replacing my-script-id with the ID obtained at point 3.
    • It should create the file .clasp.json with your scriptId inside for future use.
    • NOTE: You only need to re-run this step if you want to change the configured scriptId.
  5. Now you can run make push (or just make alone) to upload/apply local code to your desired Google Spreadsheet!
    • From now on, you can just run make to keep applying changes to the same configured spreadsheet.
    • TIP: You can run make update to pull latest changes from this repo and push them to your configured spreadsheet.
  6. Refresh/reload your Google Spreadsheet (hit F5 on the browser).
    • Once reloaded, you should see a little message box (toast) at the bottom-right corner.
  7. Go to Binance item at your spreadsheet's main menu and click on the Authorize add-on! item.
  8. A Google's dialog should appear asking for permissions, proceed with all the steps and click Allow.
    • The popup will close and nothing will change on your spreadsheet yet!
  9. Once the add-on is authorized, repeat step 7 (click Authorize add-on! again) and voila!

Windows users: You can download and use make from here or even the entire GnuWin toolset.

Troubleshoot

Please take a look to the logs before opening an issue!
https://script.google.com/u/0/home/executions

I'll try to answer all your questions but it takes time, dedication and effort to be there, so plz be patient!
The add-on is working in a stable manner and the only recurrent problem is the 418 and 403 responses from Binance API, but there is nothing we can do since our spreadsheets runs on shared Google servers whose IP addresses are shared among all the Google users.

Binance API Key

Only needed if you also want to call private endpoints from your spreadsheet.
To get your keys, go to Binance API panel and create a new one:

  1. Enter a label like Binance to Google Sheets and click the Create button.
  2. Take note for both API Key and Secret Key values.
  3. Click the Edit restrictions button.
    1. Under API restrictions ONLY Can Read checkbox should be checked.
    2. Under IP access restrictions select Unrestricted.
    3. Enable futures (read-only) if you also want to fetch data from there.
  4. Click the Save button and now you have to configure them on your spreadsheet!

Once you have the add-on already installed/enabled on your desired Google Spreadsheet, the main menu item Binance should have appeared at the rightmost position.

  1. At spreadsheet's main menu, go to Binance -> Setup API Keys.
  2. Set your API Key and click OK. Do the same for API Secret Key.
  3. Voila, you are ready to go!

NOTE: You can remove or re-configure them at any time from the Binance main menu item in your spreadsheet.

OK, I have it installed! How do I use it at my spreadsheet?

NOTE: Check the Examples sheet in the live DEMO spreadsheet for more details.

You just need to call the =BINANCE() formula in a cell!
Some operations are public, meaning they don't need a Binance API key to call'em.
Some operations are private, meaning they do require a Binance API key to call'em.

So far, these are the available operations:

Operation: "version" (public)

=BINANCE("version") will return the current Binance to Google Sheets version you are running.

Operation: "last_update" (public)

=BINANCE("last_update") will return the timestamp of the last request/response from Binance API.

Operation: "prices" (public)

=BINANCE("prices") will return a list with the latest prices from Binance.

Operation: "history" (public)

=BINANCE("history", "BTCUSDT", "interval: 1h, limit: 24") will return a list with the latest 24hr OHLCV hourly data for given full symbol/ticker from Binance.

Operation: "stats/24h" (public)

=BINANCE("stats/24h", A1:A3) will return a list with the 24hs stats for given symbols from Binance.

Operation: "account" (private)

=BINANCE("account") will return total account assets from Binance wallets (SPOT + EARN + CROSS + ISOLATED + FUTURES + SUB-ACCOUNTS).

Operation: "orders/open" (private)

=BINANCE("orders/open") will return a list with all your open/pending orders from Binance (SPOT + CROSS + ISOLATED + FUTURES).

Operation: "orders/table" (private)

=BINANCE("orders/table", MySheet!A1:A3) will transform the current sheet into a "table" in where ALL historic done/finished orders will be periodically polled and stored for each given symbol from Binance (SPOT + CROSS + ISOLATED + FUTURES).

Operation: "orders/done" (private)

IMPORTANT: It now requires at least ONE sheet in the spreadsheet with the "orders/table" operation in it!
It will take ALL your sheets that have the "orders/table" operation (aka: "order table sheets") and it will summarize them for you in a single table.

See it working live!

A spreadsheet example using the BINANCE() formula:
https://docs.google.com/spreadsheets/d/1AcOcPFsncrDB_ve3wWMHwfiFql6A4hmG1sFc01LLTDg

Binance to Google Sheets DEMO - Prices list

Some background: Why this tool had ever to come alive?!

I needed a way to have Binance data directly available at my Google Spreadsheet.
First, I've looked for several existing solutions, but none provided me the freedom, confidence and privacy that I want for this kind of delicate stuff.
It's a requirement for me that requests to Binance go directly from my spreadsheet to its API without any intermediary service in between (most than Google itself in where the spreadsheet resides, of course).
So I decided to write my own code, all from scratch, with only my will and my javascript knownledge aboard..
..and I was so happy with the results that I simply decided to share it to the world! :tada:

Disclaimer

I'm just a guy that uses both services and wanted to have Binance data available at my personal Google Spreadsheet.
I did it for myself and I liked it so much, that I decided to share it so anyone can use it!

The script only needs READ access keys to Binance API, so there is no security concerns about what the script is able to do at Binance in your behalf.
It will just retrieve useful Binance data for your enjoyment in your spreadsheets. =]

I'm not responsible for your private usage of this tool, although it will never cause you any problems!
Therefore, you will agree upon your own fully responsibility at the very moment you start using this tool.

NOTE: If you have any concerns, please feel free to open a ticket in the issues section or email me.

Privacy Policy

No personal data collect and/or usage is done in any way, that's why this add-on doesn't require any "controversial" permission from your side.
The only sensitive scopes according to Google are:

NOTE: This is an open-source project, so you will always be available to keep and eye to the code and audit it.
If you have any concerns, please feel free to open a ticket in the issues section or email me.

Terms of Service

This is not a service. There is no contract nor obligations between the code/myself and you.
The only commitment on my behalf is regarding to no personal data usage in any way.

Only you decide when and how to use this tool. You can remove the add-on anytime like any other add-on.
You may also remove your Binance API key anytime and just use the public endpoints.

Requests to Binance API from your spreadsheets are made from your Google account on your behalf.
No other service acts as an intermediary between your Google spreadsheet and Binance!

NOTE: If you have any concerns, please feel free to open a ticket in the issues section or email me.

Binance Account - Get 10% discount on fees!

Don't you have a Binance account yet?
Register using the referal link below and get a 10% discount on fees for all your trades!

https://www.binance.com/en/register?ref=SM93PRAV

Enjoy - Donate - Buy me a beer! =]

Thank you for using Binance to Google Sheets add-on!
I really hope you enjoyed and loved it as much as I love to use it everyday.

If your love is strong enough, feel free to share it with me! =D
I will much appreciate any contribution and support to keep working on it.
I have several ideas for new features, so much more could come!

You can send any token to these network addresses:


This software was published and released under the GPL-3.0 License.

Use it wisely, happy trading! :beers:
Diego.