Google Data Studio Connector отсутствует поле getData - PullRequest
0 голосов
/ 11 октября 2018

Я пытаюсь создать соединитель данных для HubSpot и бьюсь головой об стену, пытаясь понять это.Насколько я могу судить, я все делаю правильно, но в объекте запроса в вызове getData отсутствует одно из моих полей, указанных в моей схеме.

Когда я проверяю журналы, getSchema возвращает оба поля, но по какой-то причине у меня появляется только одно.Я включил код и журналы ниже:

function getData(request) {
  console.log("ORIGINAL FIELDS FOR GETDATA(): " + JSON.stringify(request.fields));

  switch (request.configParams.apiEndPoint) {
    case "sources":
      var url = API_URL + "/analytics/v2/reports/totals/summarize/daily?start=" + startYYYYMMDD + "&end=" + endYYYYMMDD;   
      break;
    case "stages":
      console.info("Fetching for Stages API");
      var url = API_URL + "/deals/v1/pipelines/default";
      getPipelineData(request, url);
      break;
  }
}

function getPipelineData(request, endPoint) {
  var header_row = [];

  console.log("FIELDS: " + JSON.stringify(request));

  request.fields.forEach(function(field) {
    for (var i = 0; i < mySchema.length; i++) {
      console.log("for loop i: " + i);
      console.log("mySchema[i]: " + JSON.stringify(mySchema[i]));

      if (mySchema[i].name === field.name) {
        console.log("Matched " + mySchema[i].name + " to " + field.name);

        header_row.push(mySchema[i]);
      } else {
        console.error("Did not match " + mySchema[i].name + " to " + field.name);
      }
    }
  });

Вы можете видеть в журнале о строке 5, что getSchema возвращает 2 поля, "label" и "stageId".Тем не менее, следующая строка в журнале показывает, что объект, используемый getData, имеет только одно поле, «метка».

Я НЕ, на всю жизнь, смог выяснить, где я ошибаюсь, и мог бы действительно помочь!

Вот ссылка на вывод журнала: https://www.screencast.com/t/rpD7oz5ZuDdv

Ответы [ 2 ]

0 голосов
/ 13 июня 2019

Попробуйте добавить в свои поля схемы атрибут группы.Выполняя итерацию по вашим полям в функции getData и перед вызовом API, вы можете просто фильтровать по группе, когда вы проверяете тип поля, чтобы сделать правильный вызов.Я разработал функции для вызова API.но общая идея такова.

 function getData(request) {
     var fieldsSchema = this.getFields()
     var requestedFields = request.fields.map(function (field) {
         for (var i = 0; i < fieldsSchema.length; i++) {
             if (fieldsSchema[i].name == field.name) {
                 return fieldsSchema[i];
             }
         }
     });

     var datatype = requestedFields.reduce(function (type, field) {
         if (!type) {
             return field['group'];
         }
         if (type !== field['group']) {
             console.log('You can only choose fields in the same group.')
         }
         return type;
     }, undefined);

     config.datatype = datatype;
     switch (config.datatype) {
         case 'sources':
             return this.getSourcesFromApi(request, config, requestedFields);
         case 'stage':
             return this.getStagesFromApi(request, config, requestedFields);
         default:
             console.log('Fields in the group not supported')
     }
 }


 function getSchema(){
    return {schema: this.getFields()};
 }

 // get fields could be something like this
 function getFields() {
     return [{
             "name": "date",
             "label": "Date",
             "description": "The date that this was created",
             "dataType": "STRING",
             "group": "stages"
         },
         {
             "name": "name",
             "label": "name",
             "dataType": "STRING",
             "group": "stages"
         }
     ]

 }
0 голосов
/ 12 октября 2018

getSchema () вызывается во время инициализации / конфигурации источника данных.Он вызывается для всех полей и обычно выполняется один раз при создании источника данных.

getData () вызывается всякий раз, когда вы создаете / просматриваете элементы диаграммы на приборной панели, и вызывается только для определенных полей в этомэлемент диаграммыЭтот список полей будет передан в request.fields.

Эта диаграмма рабочего процесса может помочь.

Из вашего журнала строки 3 и 4 произошли, когда вы былисоздание источника данных.Строка 5 произошла, когда вы добавили элемент диаграммы на свою панель инструментов (и этот элемент диаграммы имел только поле label).

...