Есть несколько проблем с вашим кодом.
Сначала API, на который вы ссылаетесь, вернет строку JSON, которая должна вызвать JSON.Parse()
, чтобы превратить его в объект JavaScript, чтобы вы могли получить доступ к его содержимому.Но определение переменной fact
создает объект JavaScript, поэтому передача объекта в JSON.parse()
, который превращает строки JSON в объекты JavaScript, не имеет смысла.
Так что это позволяет вырезать кучу кода.
Вторая важная проблема заключается в том, что для вызова setValues()
требуется массив.Но fact_object.columns
нужна []
запись в массиве.
И наконец: fact.columns[0]
- это просто длина первой строки в массиве.Смотрите решение о том, как использовать аргумент 4 getRange()
.
function write_json() {
var fact_object={"columns":["Emerging Markets Sovereing Debt","Emerging Markets Corporate Bonds","US REITs","US Leveraged Loans","AC World Equity","Private Equity","US Long Treasuries","US Large Cap","US Cash","Euro area Large Cap","Emerging Markets Equity","UK Large Cap","Emerging Markets Local Currency Debt","Japanese Equity","Commodities","Diversified Hedge Funds","World Government Bonds hedged","TIPS","US Aggregate Bonds","US High Yield Bonds","US Inv Grade Corporate Bonds"]}
Logger.log("fact_object is of type: %s",typeof(fact_object));
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
// getRange(row, column, numRows, numColumns)
sheet.getRange(8, 2, 1, fact_object.columns.length).setValues([fact_object.columns]);
return;
}