Как запросы, использующие UrlFetchApp.fetch(), учитываются по пределу скорости AlphaVantage API?
Я получаю данные технических индикаторов из AlphaVantage API с помощью следующего кода в скрипте Google Apps.
function testing(){
var day = new Date();
if(day.getDay()==0||day.getDay()==6){return;}
var hour = day.getHours();
var minute = day.getMinutes();
if((hour<6)||(hour>=13)){ //Don't call API outside of trading hours
console.log('Normal Month '+(day.getMonth()+1)+' Day '+day.getDate()+' Hour '+hour+' Minutes '+minute);
return;
}
//Call API in trading hours
console.log('API Month '+(day.getMonth()+1)+' Day '+day.getDate()+' Hour '+hour+' Minutes '+minute);
var ss=SpreadsheetApp.getActiveSpreadsheet();
var latest_cell = ss.getRangeByName('LATEST_RSI');
var url = "https://www.alphavantage.co/query?function=RSI&symbol=AAPL&interval=30min&time_period=78&series_type=open&apikey=KEY";
var response = UrlFetchApp.fetch(url);
var json = JSON.parse(response);
var res = parseFloat(Object.values(json['Technical Analysis: RSI'])[0]["RSI"])
latest_cell.setValue(res);
}
Я установил триггер Google, управляемый временем, на выполнение кода каждые 30 минут в часы торговли. Но время от времени я получаю следующую ошибку.
TypeError: невозможно преобразовать undefined или null в объект
Эта ошибка возникает на линии, куда я звоню parseFloat()
, и происходит из-за того, что достигнут предел API, поэтому из URL-адреса ничего не извлекается. Мой текущий предел ключа API составляет 5 запросов / мин и 500 запросов / день. Сначала я думал, что проблема в том, как AlphaVantage считает запросы API. Тем не менее, я попытался ввести URL-адрес в браузере, лимит ведет себя так, как ожидалось, поскольку он учитывается каждый раз, когда я перехожу по ссылке. Поэтому я не понимаю, как я нарушаю лимит, если вызываю код с помощью триггеров Google каждые 30 минут.
Обычный ответ JSON выглядит следующим образом
{
"Meta Data": {
"1: Symbol": "AAPL",
"2: Indicator": "Relative Strength Index (RSI)",
"3: Last Refreshed": "2020-06-15 16:00:00",
"4: Interval": "30min",
"5: Time Period": 78,
"6: Series Type": "open",
"7: Time Zone": "US/Eastern Time"
},
"Technical Analysis: RSI": {
"2020-06-15 16:00": {
"RSI": "54.5592"
},
"2020-06-15 15:30": {
"RSI": "55.3796"
}
...
}
Достигнув предельной ошибки, ответ будет
{ Note: 'Thank you for using Alpha Vantage! Our standard API call frequency is 5 calls per minute and 500 calls per day. Please visit https://www.alphavantage.co/premium/ if you would like to target a higher API call frequency.' }