我正在开发一个 Google Data Studio 社区连接器,并且我尝试只显示一个字段。所有代码都在 code.gs 文件中,除了 getAuthType() 和 isAdminUser() 在 Auth.gs 中。
问题是一旦调用了 getData(),getFields() 就会返回一个空对象。这是日志:
看起来 getSchema() 工作正常,这是该函数的日志:
这是 getFields() 函数:
function getFields() {
var fields = cc.getFields();
var types = cc.FieldType;
fields
.newDimension()
.setId('device')
.setName('Device')
.setType(types.TEXT);
return fields;
}
这里是 getData():
function getData(request){
console.log('getData request', request);
request.configParams = validateConfig(request.configParams);
console.log('getFields()', getFields(), typeof getFields());
var requestedFields = getFields().forIds(
request.fields.map(function(field){
return field.name;
})
);
try{
console.log('start request');
var apiResponse = fetchDataFromApi(request);
var data = formatData(apiResponse, requestedFields);
}catch (e){
cc.newUserError()
.setDebugText('Error fetching data from API. Exception details: ' + e)
.setText(
'The connector has encountered an unrecoverable error. Please Try again later.'
)
.throwException();
}
return {
schema: requestedFields.build(),
rows: data,
}
}
getSchema():
function getSchema(request){
var schema = {schema: getFields().build()};
console.log(schema);
return schema;
}
社区连接器在同一个文件中的所有函数之外初始化:
var cc = DataStudioApp.createCommunityConnector();
我查看了文档,但根据我所拥有的内容,我找不到任何会导致 getFields() 返回空对象的内容。有什么想法吗?
答案 0 :(得分:2)
我认为 getFields() 返回空对象会导致我的应用错误地显示字段,但问题是我传递给应用的数据格式不正确。
getFields() 没有用,直到它被 build() 调用(即 getFields().build() )
我认为单独为 getFields() 接收一个空对象是预期的行为。