幣圈人記帳簿—ΙΙ、在 Google Sheets 建立資料庫

Build your database using Google Sheets

bbqmars
bbqmars
9 min readSep 30, 2021

--

本篇將以建立公用資料庫為主,個人資產的整理方式可以參考我的範本。

本文章節如下:

📫 範本檔案:
公用資料庫:負責運行 api 外掛的部份
⑵ Glideapps 主要使用的資料庫可經由複製範本後獲得
※ 範本內 sheets 計算公式儘量以最原始的邏輯呈現,這是為了方便讓人複製後了解邏輯,若有需要請自己替換成更好用的計算式唷~

🧰 所需工具

安裝並授權完成後即可返回 Google Sheets 表單開始使用。

⁽⁺⁾ Apipheny 基本功能與 SyncWith 相差無幾,但有設定能突破 Google Sheets 外部 API 的每小時一次限制功能,若有大量更新需求可考慮購買,若無則使用 SyncWith 即可。※ 2021-10-17 更新:
SyncWith 已可透過進階設定達成每分鐘自動更新,詳情請參考此段落

📚 建立 Goingecko 資料庫

在範本 app 裡,我們有需要用到自動更新價格、24H 漲跌幅、ATH 與 ATL 價格等資料,因此需要從 CMC 或者 Coingecko 來抓取,因個人習慣故以 Coingecko 為範例,你也可以依照自己習慣替換成 CMC 或是交易所唷~

  • STEP 01:
    Google Sheets ➔ 開啟你的資料庫試算表 ➔ 外掛程式 ➔ SyncWith ➔ Manage connections
  • STEP 02:
    畫面右側的 SyncWith 設定 ➔ 於搜尋列中貼上「https://api.coingecko.com/api/v3/coins/markets」即可開啟選項頁
  • STEP 03:
    ⑴ 於「vs_currency」內填入「usd」⁽⁺⁾
    ⑵ 於「ids」⁽⁺⁺⁾ 與「bitcoin,ethereum」⁽⁺⁺⁾
⁽⁺⁾ 此處為必填參數
⁽⁺⁺⁾ 若無建立 ids 的幣種參數,則會將 Coingecko 上所有幣種資料都拉回來,若此資料庫僅個人帳簿內使用,建議拉自己擁有的幣種即可;若有需要拉回全幣種的話,則另外建立獨立檔案的試算表才不會使不需要的資料佔用後續 Glideapps 的條目數。
※ 其他參數為非必填項目,可待熟悉後依個人需求進行調整

※ Coingecko 的各幣種 id 請參考各幣資料頁的「API id」

  • STEP 04:
    Scheduling 為定時更新,大多數會以你的存檔時間為主,偶爾會有不定期亂跑狀態;目前支援三種自動更新時間,分別是 Manual refresh (手動)、Automatically refresh hourly (每小時)以及 Automatically refresh daily (每日),由於幣圈的特性與帳簿的需求,我們在此選擇每小時自動更新。
  • STEP 05:
    設定完更新時間後按下底部的「Preview」按鈕,並利用預覽介面裡的刪除圖示刪掉不需要的資料列 ⁽⁺⁾
⁽⁺⁾ 送出後無法重新加回已刪除的資料列,需重建一筆 connection
  • STEP 06:
    按下底部「Insert」按鈕即完成

完成後就可以看見拉回來的資料,這樣就建立好了 Coingecko 的資料庫。

📚 建立錢包資料庫

由於鏈上 scan 數據大多需要花錢購買介接權限,因此我們選擇以目前支援的鏈較多的 DeBank 來協助我們抓回錢包內餘額資料,大致設定與 📚 建立 Goingecko 資料庫 段落相同,因此僅列出基本步驟,設定如下:

  • 搜尋 API:https://openapi.debank.com/v1/user/token_list
  • id 欄位填入你的錢包地址 ⁽⁺⁾
  • is_all 欄位填入「true」
  • 設定更新頻率並預覽確認,即可送出完成建立
⁽⁺⁾ 此處請填入個人錢包地址,不要耍笨填入中文字,謝謝🤡※ 若有數個錢包則請建立對應數量的 connection,數量龐大者請另外建立獨立試算表才不會吃掉 Glideapps 的條目數唷~(不使用 Glideapps 的人可以無視這問題)

📚 設定資料庫自動更新

SyncWith 新增了 sheets 的更新機制,現在我們可以藉由一個自動產生在表單中的 checkbox 幫我們處理更新,再透過設定 apps script 的指令來達成每分鐘自動更新的機制。

  • STEP 01

若你之前就建立過 SyncWith 的 API connections,在此需要重新建立:

⑴ 在 API connection 的選單中以「Duplicate」建立副本

⑵ 產生新 API connection sheet

⑶ 刪除舊的 API connection sheet

⑷ 將新的 API connection sheet 改成原來的名稱
(例:「Coingecko 2」改回舊 sheet 的名稱「Coingecko」)

如此一來即可讓 glideapps 調用的資料對上而不必再去更動;若有不只一組 API connection 也請個別都重新複製後建立,並確認各個 API connection sheet 的頂端 A1 欄位有出現核取方塊 (checkbox)。

  • STEP 02

複製下方代碼:

function checkAllCheckboxes() {SpreadsheetApp.getActiveSheet().getRange("Coingecko!A1").check();}

開啟資料庫表單 ➔ 工具 ➔ 指令碼編輯器 ➔ 在編輯器內貼上:

若你有數個 API connection sheet,則複製有 sheet 名稱的那一列代碼向下新增,如下圖:

設定好要更新的 sheet 後,按下「儲存專案」,接著按下「執行」,確認執行紀錄沒有錯誤即完成設定。

※ 沒有排進 apps script 的 sheet 還是會依照你 API connection 的自動更新設定去跑,因此不必將每個 sheet 都列入。※ 若考慮到會佔用過多 glideapps 的更新次數,可以將 apps script 的觸發時間調整為 10 或 30 分鐘。
  • STEP 03

設定好自動勾選更新後,我們要讓這個 script 進入無人作業狀態,在編輯器的左側選單「觸發條件」裡進行設定:

設定參數如下圖:

設定完成後可以在列表內看見你的觸發條件:

完成這些設定後,我們就能擁有每分鐘自動更新的資料庫囉~

※ 範本內的強制更新按鈕主要作用於 webapp 本身快取資料的清理,與此處自動更新並無衝突,可依個人喜好決定按鈕去留。

📚 常用 API 資訊

Debank 可拉回大部份 Coingecko 或 CMC 沒有上架的幣種與價格,因此不用特地串接 1inch 等 DEX 來取得即時報價。

需注意的是,Debank 不會將無餘額的幣種列出,同樣的也無法取得價格,因此,若有需要讓幣種價格常駐在帳簿的話,請務必在錢包內留一點奈米量才能正常顯示。

SyncWith 已內建 (可搜尋關鍵字)● 交易所:
Bybt、BitMex、Bitstamp、Crypto.com、Gate.io、Gemini、Kucoin、Kraken、MXC、Poloniex、LATOKEN、OKEx
● 其他:
Blockchain、ETHScan、BSCScan、PolygonScan、1inch、PancakeSwap、Zapper、Cryptowatch、3Commas、minerstat
※ 大多數 Endpoints 與參數明確易用的 open API 都可以很快速地使用 SyncWith 或 Apipheny 套用與建立你需要的資料庫,不侷限於加密幣唷~※ 常用交易所 API 的串接上若有特殊之處日後會再補上來。

📓 熱身完畢,準備攻略前端

建立完基本資料庫以後,我們就能整合自己的幣圈資產,讓它可以自動計算與更新,下篇文章將要來製作我們自己要用的前端介面,把無法自動更新的部份更簡化與聰明使用。

--

--