我正在建立一个社区连接器并且正在摸不着头脑;文件说明:
的getData()
返回给定请求的表格数据。
请求
@param {Object} request包含数据的JavaScript对象 请求参数。
request参数包含用户提供的值和其他值 可用于完成数据请求的信息。它有 以下结构:
{" configParams":object," scriptParams":{ " sampleExtraction":boolean, " lastRefresh&#34 ;: string}," dateRange":{ " startDate":string, " endDate&#34 ;: string}," fields":[ { 对象(场) }]}
我正确设置了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
};
}
当我测试/调试时,我可以在配置步骤中选择一个帐户,正确返回架构,但是当我尝试向窗口添加窗口小部件时,我收到以下异常:
脚本错误消息: TypeError:无法读取属性" harvestAccountId"来自undefined。
脚本错误原因:USER脚本 错误堆栈跟踪:getData:244
任何建议都非常感谢。
答案 0 :(得分:3)
发现问题 - 问题是选项的value属性是一个数字,但它必须是一个字符串:
https://developers.google.com/datastudio/connector/reference#getconfig
留下这个以防万一其他人卡在这上面。 Data Studio社区连接器的配置选择选项必须包含标签和值的字符串,没有人会为您强制它们。修复是这样的:
var options = accounts.map(function(account) {
return {
label: account.name,
value: account.id + ''
};
});
答案 1 :(得分:1)
通常,当没有从用户配置传递的配置值时,request.configParams
为undefined
。
harvestAccountId
的下拉列表中选择了一个值? harvestAccountId
设置默认值可能是个好主意。getConfig()
的响应,以确保为选项传递正确的值。然后,您还可以记录request
getData()
,以便更好地了解请求中传递的内容。