Большая проблема - ваш API вызова скриптов как минимум 4 раза.Когда это делают лишь немногие пользователи, API-интерфейс сервера Google слишком часто вызывает вызов.
API Coinmarketcap имеет ограниченную пропускную способность.Когда любой клиент достигает этого предела, API возвращает HTTP error 429 .Google Scripts находится на общих серверах Google, это означает, что многие пользователи выглядят как один клиент для Coinmarketcap API.
Когда API отклоняет ваш запрос, ваш скрипт завершается неудачно - сообщение об ошибке соответствует предполагаемой ошибке (xpath не может найти кавычки компонент в пустой переменной).
Это безжалостное поведение.Пожалуйста, не разрушайте API с помощью массовых вызовов.
Вы можете загрузить данные из API сразу и повторно использовать их для каждого поиска в данных.
У меня есть похожая электронная таблицаавтоматически заполняется из Coinmarketcap API, вы можете скопировать его для:
Этот мой скрипт строго запрашивает API только один раз за все время выполнения и повторно использует один ответ для всех запросов.
Изменение вашего скрипта
Также вы можете внести несколько изменений в свой код для экономии ресурсов:
Измените IMPORTJSON
функцию с этой:
function IMPORTJSON(url,xpath){
var res = UrlFetchApp.fetch(url);
var content = res.getContentText();
var json = JSON.parse(content);
...
на эту:
function IMPORTJSON(json, xpath) {
...
и раздел кода rutime вы можете изменить следующим образом:
var res = UrlFetchApp.fetch("https://api.coinmarketcap.com/v2/ticker/1/?convert=EUR");
var content = res.getContentText();
var json = JSON.parse(content);
var btc_eur = IMPORTJSON(json,"data/quotes/EUR/price");
var btc_btc = IMPORTJSON(json,"data/quotes/BTC/price");
ss.getRange("B2").setValue([btc_eur]);
ss.getRange("H2").setValue([btc_btc]);
...
Главное преимущество: UrlFetchApp.fetch
вызывается только один раз.
Да, я знаю, этот код неработает 1: 1 как твой.Это потому, что получить цены только за евро, а не за BTC.Естественно, извлечение сравнения между BTC и BTC не нужно, потому что это всегда 1 и другие значения, которые вы можете математически рассчитать по ответу EUR - пожалуйста, не злоупотребляйте API для таких запросов.