You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Data Studio无数据显示及address字段不展示问题求助

解决Google Data Studio Community Connector无数据及address字段不展示问题

问题描述

尝试在Google Data Studio中通过Community Connector展示API返回的JSON数据,已验证API返回格式正确,但遇到两个问题:

  • Data Studio界面显示「无数据」
  • address字段未正常展示

原代码问题分析

  1. 字段ID匹配错误:getData函数中获取请求字段时误用field.name,实际应使用field.id,导致字段映射失败
  2. 数据行返回格式错误:responseToRows返回的单条数据未放入数组,Data Studio要求rows是包含数据行对象的数组
  3. 空值处理缺失:API返回的address为null,Data Studio无法直接识别该值,需转换为有效值
  4. switch语句逻辑错误:使用return终止forEach循环,导致后续字段无法被处理

API返回JSON示例

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

修正后的完整连接器代码

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

  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) {
  var row = [];
  requestedFields.asArray().forEach(function (field) {
    switch (field.getId()) {
      case 'username':
        row.push(response.result.user.createdByName || '');
        break;
      case 'version':
        row.push(response.result.user.version || 0);
        break;
      case 'address':
        // 将null转换为空字符串,适配Data Studio数据格式
        row.push(response.result.user.address || '');
        break;
      default:
        row.push('');
        break;
    }
  });
  return { values: row };
}

function getData(request) {
  // 修正:使用field.id匹配定义的字段ID
  var requestedFieldIds = request.fields.map(function(field) {
    return field.id;
  });
  var requestedFields = getFields().forIds(requestedFieldIds);

  var options = {
    'method' : 'post',
    'contentType': 'application/json',
    "headers":{ "api-key": request.configParams.api_key },
    // 用JSON.stringify生成请求体,避免手动拼接的语法错误
    "payload": JSON.stringify({username: username, password: password}),
    'muteHttpExceptions': true
  };

  var response = UrlFetchApp.fetch(url, options);
  var parsedResponse = JSON.parse(response);
  var row = responseToRows(requestedFields, parsedResponse);
  
  // 修正:rows必须是数组格式,包含所有数据行
  return {
    schema: requestedFields.build(),
    rows: [row]
  };
}

修正效果说明

  • 解决「无数据」问题:Data Studio将正常加载并展示API返回的用户数据
  • address字段正常展示:API返回的null将转换为空字符串,在界面中显示为空白单元格
  • 字段映射正确:username展示Jeirick Hiponia,version展示对应数值

内容的提问来源于stack exchange,提问作者Bohdan V.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 10:51:11