2017-09-29 9 views
0

私はコミュニティー・コネクターを構築中で、私の頭を傷つけています。ドキュメントの状態:getData()でconfigParamsが定義されていません

getData()

Returns the tabular data for the given request.

Request

@param {Object} request A JavaScript object containing the data request parameters.

The request parameter contains user provided values and additional information that can be used to complete the data request. It has the following structure:

{ "configParams": object, "scriptParams": { "sampleExtraction": boolean, "lastRefresh": string }, "dateRange": { "startDate": string, "endDate": string }, "fields": [ { object(Field) } ] }

Iました正しくセットアップGETCONFIG()(少なくとも、私の構成は、ユーザーから要求されている)が、私のgetData関数はconfigParamsオブジェクトが渡されていません。ここに私のコードです。

function getConfig(request) { 

    var Harvest = HarvestService({ 
    token: getHarvestAuthService().getAccessToken() 
    }); 
    var accounts = Harvest.accounts.list(); 
    var options = accounts.map(function(account) { 

    return { 
     label: account.name, 
     value: account.id 
    }; 

    }); 

    var config = { 
    configParams: [ 
     { 
     type: 'SELECT_SINGLE', 
     name: 'harvestAccountId', 
     displayName: 'Harvest Account ID', 
     helpText: 'The ID of the Harvest Account to pull data from.', 
     options: options 
     } 
    ], 
    dateRangeRequired: true 
    }; 

    return config; 

} 

function getData(request) { 

    var startDate = request.dateRange.startDate; 
    var endDate = request.dateRange.endDate; 
    var accountId = request.configParams.harvestAccountId; 
    var harvestAuthService = getHarvestAuthService(); 

    var Harvest = HarvestService({ 
    token: harvestAuthService.getAccessToken(), 
    account: accountId 
    }); 

    var fieldKeys = request.fields.map(function(field) { return field.name; }); 

    var entries = Harvest.entries.list({ 
    startDate: new Date(startDate), 
    endDate: new Date(endDate) 
    }); 

    var rows = entries.map(entryToRow); 

    return { 
    schema: request.fields, 
    rows: rows, 
    cachedData: false 
    }; 

} 

私は/デバッグをテストするとき、私は設定ステップでアカウントを選択することができ、スキーマが正しく返されますが、私は試してみて、レポートにウィジェットを追加するとき、私は次の例外を取得:

Script error message: TypeError: Cannot read property "harvestAccountId" from undefined.
Script error cause: USER Script error stacktrace: getData:244

アドバイスをいただければ幸いです。

答えて

1

問題を見つけた - 問題は、オプションのvalue属性が数値だったということでしたが、それは文字列でなければなりません:

https://developers.google.com/datastudio/connector/reference#getconfig

ここにこれを残して他の誰がこの上で立ち往生する場合には。 Data Studio Community Connectorの設定選択オプションには、ラベルと値の両方の文字列が必要です。誰もあなたのためにそれらを強要しません。修正プログラムは、このでした:

var options = accounts.map(function(account) { 

    return { 
    label: account.name, 
    value: account.id + '' 
    }; 

}); 
0

通常、request.configParamsは、ユーザーの設定から渡された何も設定値が存在しないときundefinedです。

  1. コネクタをテストするときに、ドロップダウンリストで値をharvestAccountIdに設定していますか?
  2. このコネクタを他のユーザーと共有する予定がある場合、ユーザーがオプションを選択しない場合のデフォルト値はharvestAccountIdにすることをお勧めします。
  3. を使用して、getConfig()の応答を確認して、正しい値がオプションに渡されるようにすることができます。次に、getData()requestを記録して、リクエストで正確に何が渡されているかをよりよく理解することができます。
+0

ありがとうございました。問題は私の値が文字列ではなく、彼らは場面の背後に強制されていないということでした。 –

関連する問題