为什么 getFields() 返回一个空对象?

时间:2021-03-24 17:16:07

标签: javascript google-apps-script google-data-studio

我正在开发一个 Google Data Studio 社区连接器,并且我尝试只显示一个字段。所有代码都在 code.gs 文件中,除了 getAuthType() 和 isAdminUser() 在 Auth.gs 中。

问题是一旦调用了 getData(),getFields() 就会返回一个空对象。这是日志: enter image description here

看起来 getSchema() 工作正常,这是该函数的日志: enter image description here

这是 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() 返回空对象的内容。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

我认为 getFields() 返回空对象会导致我的应用错误地显示字段,但问题是我传递给应用的数据格式不正确。

getFields() 没有用,直到它被 build() 调用(即 getFields().build() )

我认为单独为 getFields() 接收一个空对象是预期的行为。