Вы абсолютно уверены, что ваш var cellCurrency
- правильный диапазон, который вы хотите? Из вашего скриншота видно, что правая ячейка - «E10» ... но давайте предположим, что вы это исправили.
Тогда у вас возникнет проблема с размерами вашего массива, ваш var cellsPrice
является 2D-массивом (строки, столбцы), даже если диапазон, из которого вы получаете значения, всего одна строка!.
Другая проблема, ваш var cellsTraget*
также является 2D-диапазоном, поэтому вы не можете использовать setValue()
... Вы можете использовать setValues()
, но массив значений ДОЛЖЕН соответствовать размеру диапазона. И как они в настоящее время, они не совпадают. Подсказка: транспонируйте их, если хотите использовать указанную функцию .
Кроме того, ваш for-l oop вообще не имеет никакого смысла, поскольку вы все равно не зацикливаетесь!.
Вот пример рабочего кода:
function sendButton() {
// Activate the spreadsheet
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var baseCurrency = "USD";
// Fetching the data from the API
var res = UrlFetchApp.fetch("https://api.exchangeratesapi.io/latest?base="+baseCurrency).getContentText();
// Parsing data to JSON
var json = JSON.parse(res);
// Exporting data in variables
var USD = [json['rates']['USD'], json['rates']['CAD'], json['rates']['GBP'], json['rates']['EUR']];
// I will do it for one row
var articlePrice = spreadsheet.getRange('E5').getValue();
// Mind the array's dimensions!
var convertedPricesRange = spreadsheet.getRange('I5:L5');
var convertedPriceValues = [[articlePrice*USD[0],articlePrice*USD[1],articlePrice*USD[2],articlePrice*USD[3]]];
// Set converted values
convertedPricesRange.setValues(convertedPriceValues);
}
Дополнительная информация: