本篇文章更新時間:2021/11/10
如有資訊過時或語誤之處,歡迎使用 Contact 功能通知。
一介資男的 LINE 社群開站囉!歡迎入群聊聊~
如果本站內容對你有幫助,歡迎使用 BFX Pay 加密貨幣 或 新台幣 贊助支持。
剛好這幾天查看一個加密貨幣的投資試算表時發現要一直手動去更新加密貨幣的報價有點累(?),就決定來試試把資料來源指定為外部資源。
使用方法很簡單,套用開源專案:import_json_appsscript.js
原始的分享有不少人 fork 出去改,連結這份是我 fork 最近期(2019)還有更新的版本。
在試算表選單「工具」選到「指令碼編輯器」,打開一個編輯器頁面後,把預設的範例程式碼全部刪除,改貼上連結內的 code,存檔。
回到表單內要拉資料的欄位裡輸入 =ImportJSON("https://api.mxp.tw/blahblah","","noHeaders")
,API 連結替換成自己要取資料的即可,第二個參數是資料路徑,怎查看資料路徑可以把第三個參數改成 rawHeaders
,更詳細的操作細節都可以在專案裡的 code 找到。
能拉到資料是一回事,資料要能自動更新會更方便。所以可以補上一段程式碼:
function UpdateJson() {
var dt = new Date();
var time_stamp = dt.toLocaleTimeString();
var cellVal = '= ROUND(ImportJSON("https://api.mxp.tw/blahblah?t=' + time_stamp + '","/price","noHeaders"),10)';
var tab = ['試算表分頁名稱A', '試算表分頁名稱B', '試算表分頁名稱C'];
var target_cell = ['F4:G4', 'F4:G4', 'K2'];//對應試算表分頁中要更新的欄位編號
var ss = SpreadsheetApp.getActiveSpreadsheet();
for (var i = 0; i < tab.length; i++) {
var sheet1 = ss.getSheetByName(tab[i]);
var range = sheet1.getRange(target_cell[i]).setValue(cellVal);
}
}
這段範例的意思是去重新填入公式觸發計算,不過這樣還不夠,補上這段程式碼後還要到專案編輯器裡找到「觸發條件」,新增一個觸發條件。
如圖設定,指定剛剛的方法,設定時間驅動,每分鐘去驅動。建立完成後就算是完成了「每分鐘自動更新」的處理。
手動更新的部分只需要改程式碼中 readRows
方法如下:
function readRows() {
UpdateJson();
};
當手動點擊試算表選單上 Script Center Menu
選 Read Data
就可以觸發這個 readRows
方法手動更新了!
參考資料:Spreadsheet Service