Google Data Studio无数据显示及address字段不展示问题求助
解决Google Data Studio Community Connector无数据及address字段不展示问题
问题描述
尝试在Google Data Studio中通过Community Connector展示API返回的JSON数据,已验证API返回格式正确,但遇到两个问题:
- Data Studio界面显示「无数据」
- address字段未正常展示
原代码问题分析
- 字段ID匹配错误:
getData函数中获取请求字段时误用field.name,实际应使用field.id,导致字段映射失败 - 数据行返回格式错误:
responseToRows返回的单条数据未放入数组,Data Studio要求rows是包含数据行对象的数组 - 空值处理缺失:API返回的
address为null,Data Studio无法直接识别该值,需转换为有效值 - 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.
相关产品推荐
相关产品推荐

