Я использую этот скрипт в Google Sheets для извлечения данных из API coinmarketcap.Я добавил цикл (coins.forEach), чтобы получить все данные нужных мне монет всего за один вызов API (ограниченное количество кредитов).Но после каждой петли / монеты она продолжает опускаться в столбце, и я хотел бы использовать новый столбец для каждой монеты.Как я могу сделать это, не вызывая функцию (и API) снова для каждой монеты?Надеюсь, я дал понять, что не могу вспомнить, откуда у меня оригинальный сценарий
function cmc(){
var response = CMCFetch();
if (response.status === true) { response.data = response.datos;
}
return response.data;}
function xCMCFetch() {
var uri = "https://sandbox-api.coinmarketcap.com/v1/cryptocurrency/listings/latest?CMC_PRO_API_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
cache = CacheService.getScriptCache(),
response = { status: true, name: "Unknown", USD: 0, BTC: 0, datos: [], error:null },
obj_array = null;
obj_array = JSON.parse(cache.get('firstX'));
if (obj_array === null )
{ try {
obj_array = JSON.parse(UrlFetchApp.fetch(uri).getContentText());
cache.put('firstX', JSON.stringify(obj_array), 20); } // ** cache for 20 sec
catch (e) { response.status = false; response.error = e } }
var coins = ["btc","eth","ltc","bch"];
if (response.status === true) {
coins.forEach(function(symb){
for (r in obj_array.data){
if (obj_array.data[r].symbol == symb.toUpperCase()) {
response.datos.push(
obj_array.data[r].total_supply,
obj_array.data[r].cmc_rank,
obj_array.data[r].quote.USD.market_cap,
obj_array.data[r].quote.USD.volume_24h,
parseFloat(obj_array.data[r].quote.USD.percent_change_7d),
parseFloat(obj_array.data[r].quote.USD.percent_change_24h),
parseFloat(obj_array.data[r].quote.USD.percent_change_1h),
obj_array.data[r].quote.USD.price
);
break; } } })}
return response;
}