1

我正在为 Google 数据工作室创建自定义社区连接器。

我做了以下代码,所以请告诉我这段代码有什么问题。

function getAuthType() {
  var response = { type: 'NONE' };
  return response;
}

function getConfig(request) {
  var cc = DataStudioApp.createCommunityConnector();
  var config = cc.getConfig();
  return config.build();
}

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

  fields.newDimension()
    .setId('itemname')
    .setType(types.TEXT);

  fields.newDimension()
    .setId('color')
    .setType(types.TEXT);

  fields.newMetric()
    .setId('quantity')
    .setType(types.NUMBER)
    .setAggregation(aggregations.SUM);

  fields.newDimension()
    .setId('day')
    .setType(types.YEAR_MONTH_DAY);

  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
  return response.map(function(dailyDownload) {
    var row = [];
    requestedFields.asArray().forEach(function (field) {
      switch (field.getId()) {
          case 'day':
            return row.push(dailyDownload.day.replace(/-/g, ''));
          case 'quantity':
            return row.push(dailyDownload.quantity);
          case 'itemname':
            return row.push(dailyDownload.itemname);
          case 'color':
            return row.push(dailyDownload.color);
          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 url = 'https://my-url';
   var response = UrlFetchApp.fetch(url);
   var parsedResponse = JSON.parse(response);
   var rows = responseToRows(requestedFields, parsedResponse);

   return {
     schema: requestedFields.build(),
     rows: rows
  };
}

(1) TypeError: Cannot call method "map" of undefined in function responseToRows(requestedFields, response)

(2) TypeError: Cannot read property "fields" from undefined at var requestedFieldIds = request.fields.map(function(field).

提前致谢。

4

0 回答 0