如何使用从 Binance API 收到的数据更新谷歌电子表格

时间:2021-07-05 02:41:53

标签: python dictionary gspread binance

我试图将 btcusdt 价格从币安提取到我的 gdrive 上的谷歌电子表格,但徒劳无功。

我尝试了以下方法:

import websocket, json, numpy as np

cc = 'btcusdt'
interval = '1m'

socket = f'wss://stream.binance.com:9443/ws/{cc}@kline_{interval}'  

from google.colab import auth
auth.authenticate_user()

import gspread
import pandas as pd
from oauth2client.client import GoogleCredentials

keyid = 'mykeyid'

gc = gspread.authorize(GoogleCredentials.get_application_default())

wb = gc.open_by_key('mykeyid')
wrksheet = wb.worksheet('btcusdt')


def on_message(ws, message):
    json_message = json.loads(message)
    cs = json_message['k']
        
    wrksheet.update('A5', cs[])
    
ws = websocket.WebSocketApp(socket, on_message=on_message) 

ws.run_forever()

我需要将每条消息 (cs) 附加到一个新行。

请注意,'k' 是一个字典。

提前致谢。

1 个答案:

答案 0 :(得分:0)

这个想法是捕获工作表的最后一行,然后获取该行的值并将其传递给可用于确定单元格信息的 find 方法。

def on_message(ws, message):
    json_message = json.loads(message)
    cs = json_message['k']
        
    # This will get the last row but consider other slicing options if you have headers
    last_row = wrksheet.get_all_values()[::-1]
    
    # Pass the value, I assume you only have 1 column to this from your code 'A5'
    cell = wrksheet.find(last_row[0])

    # Increment the cell row to make sure it will populate the last row + 1
    wrksheet.update('A'+str(cell.row+1), cs)