У меня проблема с настройкой значения в googlesheet. Googlesheet setValue поддерживает только массив, но мне нужно поместить объект в строки.
Я пытался использовать appendRow, но он не будет работать в пользовательских функциях. Я также попробовал setValue с преобразованием моих объектов в массив, но затем пропустил некоторые данные.
Это моя функция извлечения. Он работает и получает все данные, которые мне нужны, но мне очень трудно поместить их в googlesheet.
function importTrelloJSON(url){
var response = UrlFetchApp.fetch(url);
var content = response.getContentText();
var data = JSON.parse(content);
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var trelloJSON = data.map(function(el, index) {
var customFieldItems = el.customFieldItems.map(function(el){
return [el.idCustomField, el.value.number];
});
return { name: el.name, customFieldItems: customFieldItems };
});
retrun trelloJSON;
}
and this is my JSON structure, sometimes there is nested data
[
{
"id": "5ce26ef1d5bdac4ec20e8982",
"name": "WWW",
"customFieldItems": []
},
{
"id": "5ced04d96ec7ed6120b5e91d",
"name": "Marketing",
"customFieldItems": []
},
{
"id": "5cfed3d8e88f931008aa58ad",
"name": "Reset softu Android",
"customFieldItems": [
{
"id": "5cfed4145d019516555a9086",
"value": {
"number": "100"
},
"idCustomField": "5ced79c27bbd7102945ba1ff",
"idModel": "5cfed3d8e88f931008aa58ad",
"modelType": "card"
}
]
},
Я пытался использовать готовую функцию importJSON https://github.com/bradjasper/ImportJSON, но она не работает с моими запросами.
Спасибо за помощь.
// редактировать
Теперь я могу отображать данные, но когда я нажимаю на массив, у меня проблемы с диапазоном. Количество столбцов данных не соответствует количеству столбцов в диапазоне.
Я пробовал Math.max.apply (Math, trelloJSON.map (function (el) {return el.length})). Но это больше не работает.
Вот мой новый код:
function importTrelloJSON(url){
var response = UrlFetchApp.fetch(url);
var content = response.getContentText();
var data = JSON.parse(content);
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var mainArray = new Array();
var trelloJSON = data.map(function(el, index) {
mainArray = [];
mainArray.push(el.name);
el.customFieldItems.map(function(el){
mainArray.push(el.idCustomField);
mainArray.push(el.value.number);
});
Logger.log(mainArray);
return mainArray;
});
sheet.getRange(1,1, trelloJSON.length, Math.max.apply(Math, trelloJSON.map(function (el) { return el.length }))).setValues(trelloJSON);
}