Как запросы, использующие 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.' }

0 ответов

Другие вопросы по тегам