function(){if(this.getSheet.sheet){returnthis.getSheet.sheet;}varSHEET_URL=PropertiesService.getScriptProperties().getProperty('SHEET_URL');if(!SHEET_URL){throw'You should set "SHEET_URL" property from [File] > [Project properties] > [Script properties]';}varsheets=SpreadsheetApp.openByUrl(SHEET_URL);this.getSheet.sheet=sheets.getActiveSheet();returnthis.getSheet.sheet;}
// MainfunctionscrapeExchangeToSheet(){varex_json=exchange.callExchangeAPI();exchange.writeSheets(ex_json);}varexchange={getSheet:function(){if(this.getSheet.sheet){returnthis.getSheet.sheet;}varSHEET_URL=PropertiesService.getScriptProperties().getProperty('SHEET_URL');if(!SHEET_URL){throw'You should set "SHEET_URL" property from [File] > [Project properties] > [Script properties]';}varsheets=SpreadsheetApp.openByUrl(SHEET_URL);this.getSheet.sheet=sheets.getActiveSheet();returnthis.getSheet.sheet;},// call exchange APIcallExchangeAPI:function(){varnow=newDate(),url="https://www.gaitameonline.com/rateaj/getrate",response=UrlFetchApp.fetch(url),content=response.getContentText(),fx=JSON.parse(content);fx.date=now;returnfx;},// Write exchange data (JSON) to the Google SheetwriteSheets:function(ex_json){varsheet=this.getSheet();// get last row to add exchange datavarlast_row=sheet.getLastRow()+1;varcol=1;sheet.getRange(last_row,col++).setValue(ex_json.date);foreach(varquoteinex_json.quotes){sheet.getRange(last_row,col++).setValue(quote.currencyPairCode);sheet.getRange(last_row,col++).setValue(quote.high);sheet.getRange(last_row,col++).setValue(quote.low);sheet.getRange(last_row,col++).setValue(quote.ask);sheet.getRange(last_row,col++).setValue(quote.bid);sheet.getRange(last_row,col++).setValue(quote.open);}}}
3. 上記を1分間隔で実行する。
上記の処理を定期的に実行する。
時計マークのアイコンをクリックする。もしくは、メニュー Edit > Current project's trigger を選択する。
そうするとダイアログが出てくるので、No triggers set up. Click here to add one now. をクリックする。
Run にはメイン処理の scrapeExchangeToSheet, Events には好きな起動時間を設定できる。
ここでは1分間隔で実行するため、Time-driven : Minutes timer: Every minute を選択する。