Google App Script - Json разбор ответов - PullRequest
1 голос
/ 13 марта 2020

Я использую скрипт приложения Google для анализа этого json ответа.

enter image description here

Issue

На листах я получаю только значения первого метри c, а не второго

enter image description here

Но мне нужны значения и второй показатель c.

Это то, чего я пытаюсь достичь

enter image description here

Любая помощь ?

Спасибо

1 Ответ

3 голосов
/ 13 марта 2020

Как насчет этого примера сценария? Пожалуйста, подумайте об этом как об одном из нескольких возможных ответов.

Пример сценария:

var json = {locationMetrics:[{metricValues:[{metric:"ACTIONS_DRIVING_DIRECTIONS", dimensionalValues:[{timeDimension:{timeRange:{startTime:"2020-02-01T00:00:00Z"}}, value:3, metricOption:"AGGREGATED_DAILY"}, {value:0, metricOption:"AGGREGATED_DAILY", timeDimension:{timeRange:{startTime:"2020-02-02T00:00:00Z"}}}]}, {metric:"ACTIONS_PHONE", dimensionalValues:[{metricOption:"AGGREGATED_DAILY", timeDimension:{timeRange:{startTime:"2020-02-01T00:00:00Z"}}, value:0}, {timeDimension:{timeRange:{startTime:"2020-02-02T00:00:00Z"}}, value:0, metricOption:"AGGREGATED_DAILY"}]}], timeZone:"Europe/London", locationName:"accounts/xxx/locations/xxx"}]};

// Create an array from "json".
var locationMetrics = json.locationMetrics;
var rows = locationMetrics.reduce(function(ar1, obj1) {
  return ar1.concat(obj1.metricValues.reduce(function(ar2, obj2) {
    return ar2.concat(obj2.dimensionalValues.map(function(obj3) {return [obj2.metric, obj3.metricOption, obj3.timeDimension.timeRange.startTime, obj3.value]}));
  }, []));
}, []);

// Put values to Spreadsheet.
var sheet = SpreadsheetApp.getActive().getSheetByName('sheet1')
dataRange = sheet.getRange(2, 1, rows.length, 4); 
dataRange.setValues(rows);
  • json от вашего вопроса.

Результат:

[
    ["ACTIONS_DRIVING_DIRECTIONS","AGGREGATED_DAILY","2020-02-01T00:00:00Z",3],
    ["ACTIONS_DRIVING_DIRECTIONS","AGGREGATED_DAILY","2020-02-02T00:00:00Z",0],
    ["ACTIONS_PHONE","AGGREGATED_DAILY","2020-02-01T00:00:00Z",0],
    ["ACTIONS_PHONE","AGGREGATED_DAILY","2020-02-02T00:00:00Z",0]
]

Примечание:

  • В этом случае сценарий может работать как с V8, так и без него.
  • В этом примере сценария значением примера является используемый. Таким образом, предполагается, что все ключи "metric", "metricOption", "startTime", "value" существуют. Поэтому, пожалуйста, будьте осторожны с этим.

Ссылки:

Если я неправильно понял ваш вопрос, и это не то направление, в котором вы хотите, прошу прощения.

...