1

I'm trying to show JSON data got from API in Google Data Studio. so I created community connector and in script verified JSON data from api.

here is script code.

function getFields(request) {
  var cc = DataStudioApp.createCommunityConnector();
  var fields = cc.getFields();
  var types = cc.FieldType;
  // var aggregations = cc.AggregationType;

  fields.newDimension()
    .setId('username')
    .setType(types.TEXT);
  
  fields.newMetric()
    .setId('version')
    .setType(types.NUMBER);
  
  fields.newDimension()
    .setId('address')
    .setType(types.TEXT);
  
  return fields;
}

function getSchema(request) {
  var fields = getFields(request).build();
  return { schema: fields };
}
function responseToRows(requestedFields, response) {
  // Transform parsed data and filter for requested fields
    var row = [];
    requestedFields.asArray().forEach(function (field) {
      switch (field.getId()) {
        case 'username':
          return row.push(response.result.user.createdByName);
        case 'version':
          return row.push(response.result.user.version);
        case 'address':
          return row.push(response.result.user.address);
        default:
          return row.push('');
      }
    });
    return { values: row };
}

function getData(request) {

  var requestedFieldIds = request.fields.map(function(field) {
    return field.name;
  });
  var requestedFields = getFields().forIds(requestedFieldIds);

  // Fetch and parse data from API
  var options = {
    'method' : 'post',
    'contentType': 'application/json',
    "headers":{ "api-key": request.configParams.api_key },
    "payload": "{username:\""+username+"\", password: \""+password+"\"}",
    'muteHttpExceptions': true
  };

  var response = UrlFetchApp.fetch(url, options);
  var parsedResponse = JSON.parse(response);
  var rows = responseToRows(requestedFields, parsedResponse);
  console.log('getData request', parsedResponse);
  return {
    schema: requestedFields.build(),
    rows: rows
  };
}

this is JSON file

{
    "result": {
        "user": {
            "type": "User",
            "id": 1073787385,
            "address": null,
            "version": 1675247127459332096,
            "createdBy": 310055,
            "createdByName": "Jeirick Hiponia",
              }
     }
}

Result in data studio. enter image description here

why don't address show?

And why no data? I think row.push in responseToRows() function is issue.

I'd like to show data like this.

enter image description here

Bohdan V.
  • 115
  • 1
  • 11

0 Answers0