read.cash Log in
@SmallQTarot more from that month

接續前三篇的教學文 https://noise.cash/post/1k8q9gjx https://noise.cash/post/lr6zwrj6 https://noise.cash/post/1jg73vx0 感謝 @mizukilin 幫忙debug,我總算發現FTX提供的資訊序順會不太固定XD 為了修正這個問題,今天來介紹如何在google試算表中引入這種JSON格式的資料 來進行FTX的利率每小時會在這個網頁更新 步驟一(圖一)、打開google app script 把這個github裡面的392行程式先copy到最前面的地方。 https://gist.github.com/paulgambill/cacd19da95a1421d3164 這392行程式基本上就是定義了一個新的函數ImportJSON() 這個函數就是做了我們前一篇透過取代和切片的方法想辦法把一串JSON文字排列整齊… 事實上這個方法比我們土砲的排列乾淨多了XD 步驟二(圖二)、修改mytest() { var token = "###############剛剛拿到的權杖################" var s1=SpreadsheetApp.getActiveSpreadsheet().getSheetByName("noise2"); var cellVal = '=ImportJSON("https://ftx.com/api/spot_margin/history")'; s1.getRange("A1").setValue(cellVal); Utilities.sleep(1000); var temp_value1 = s1.getRange("H3").getValue(); var message = "BCH利率為"+(temp_value1*24*365*100).toFixed(3); sendline(message,token); } 框框裡是有修改的地方, 可以注意的是為了不要和昨天的分頁弄混,這次操作環境是一個新分頁noise2 然後和前篇教學類似,在noise2的A1格中填入「=ImportJSON("https://ftx.com/api/spot_margin/history")」 這個ImportJSON()函數就是步驟一裡定義的函數,直接拿來用就好了。 步驟三(圖三)、製作查表 由於FTX回傳的資料順序不太固定,為了機器人抓取資料方便需要重新排列一下。 圖三綠色的部分請輸入想查詢的資料, 以圖三中我想查詢USD/BCH/MATIC/ETH的利率,依序填入儲存格G2/G3/G4/G5中。 圖三黃色的部分請輸入函數 儲存格H2請填入「=vlookup(G2,$B:$E,4,false)」 儲存格H3請填入「=vlookup(G3,$B:$E,4,false)」 儲存格H4請填入「=vlookup(G4,$B:$E,4,false)」 儲存格H5請填入「=vlookup(G5,$B:$E,4,false)」 (要有$號的話才可以用滑鼠往下拉哦) vlookup()是試算表中內建的函數, 用來查詢B~E column中和儲存格G2/G3/G4/G5相同的row裡,從B column開始往右數第4筆資料... 這樣剛好是會是利率USD/BCH/MATIC/ETH對應的利率,而且就不用怕FTX回傳的資料順序變來變去了=w= 輸出資料的話BCH的利率剛好會是H3格,就直接印出來啦,結果如圖四。 步驟四(圖五)、查詢其他資料 請參考FTX的教學文件 https://docs.ftx.com/#overview 網頁的右邊會有GET 「XXXXXX」,引號這部分貼到對應的網址就能ImportJSON了,如圖五。 ps. 最後附上一個已知的問題,就是有個時候觸發這種自製的ImportJSON()函數可能會回傳N/A所以機器人會怪怪的。這個已經有很多人反應了但是到目前為止還是沒有解法。目前我是弄成如果遇到N/A的話就重抓,儘量避開這問題… var temp_value1 = s1.getRange("H3").getValue(); for(var i=0; i<8192; i++) { if(temp_value1=='#N/A') temp_value1 = s1.getRange("H3").getValue(); else break; }

2 comments

Log in to join in Reading is open to everyone. Replying needs an account.