我正在按照推荐的codelab编写连接器,但面临一个问题,该问题已经在[另一个问题]上进行了讨论,但是并不能解决我的情况。
我什至以为一切正常,也收到了Data Studio Community Connector error: The number of columns in the data does not match the number in the schema.
消息。
我仔细检查了要求的字段,只返回了要求的字段。它要求返回预期的7个数字字段。
感谢您的帮助。
我的getData()
方法:
function getData(request) {
try {
console.log("getData - request", request);
// Create schema for requested fields
var requestedFieldIds = request.fields.map(function(field) {
return field.name;
});
var requestedFields = getFields().forIds(requestedFieldIds);
// Fetch and parse data from API
var url = [
'https://api.hubstaff.com',
'/v2/organizations/',
request.organizationId,
'/activities/daily',
'?date[start]=2019-12-19&date[stop]=2019-12-26'
];
var response = UrlFetchApp.fetch(url.join(''));
var parsedResponse = JSON.parse(response);
var rows = responseToRows(requestedFields, parsedResponse);
console.log("getData - rows", rows);
return {
schema: requestedFields.build(),
rows: rows
};
} catch (e) {
e = (typeof e === 'string') ? new Error(e) : e;
Logger.log("Catch", e);
console.log("Catch", e);
throw e;
}
}
"getData - request"
日志(来自StackDriver的“真实”补码调用):
{
organizationId=XXXXXXXX,
fields=[
{dataType=NUMBER, name=user_id, semantics={conceptType=DIMENSION, semanticType=NUMBER}},
{dataType=NUMBER, name=tracked, semantics={isReaggregatable=true, conceptType=METRIC, semanticType=NUMBER}},
{dataType=NUMBER, name=keyboard, semantics={isReaggregatable=true, conceptType=METRIC, semanticType=NUMBER}},
{dataType=NUMBER, name=mouse, semantics={isReaggregatable=true, conceptType=METRIC, semanticType=NUMBER}},
{dataType=NUMBER, name=overall, semantics={isReaggregatable=true, conceptType=METRIC, semanticType=NUMBER}},
{dataType=NUMBER, name=idle, semantics={isReaggregatable=true, conceptType=METRIC, semanticType=NUMBER}},
{dataType=NUMBER, name=resumed, semantics={isReaggregatable=true, conceptType=METRIC, semanticType=NUMBER}}
],
accessToken=XXXXXXXXX
}
"getData - rows"
日志(来自StackDriver的“真实”补码调用):
[
{values=[164079, 320317.0, 75110.0, 142879.0, 163043.0, 25266.0, 454.0]},
{values=[642198, 301352.0, 73463.0, 135327.0, 154413.0, 24198.0, 0.0]},
{values=[615157, 275512.0, 69592.0, 123441.0, 140382.0, 22181.0, 0.0]},
{values=[741562, 258775.0, 66839.0, 115086.0, 130181.0, 22181.0, 0.0]},
{values=[405833, 229674.0, 58363.0, 100779.0, 114785.0, 22181.0, 0.0]}
]
答案 0 :(得分:0)
我解决了问题,但与我的预期相去甚远。
我不知道为什么,但是,在阅读日志时,我看到它们第一次由request.organizationId
发送配置参数,而在下次调用时由request.configParams.organizationId
发送配置参数。为了解决这个问题,我做到了:
var organizatioInd = request.organizationId || request.configParams.organizationId;
var accessToken = request.accessToken || request.configParams.accessToken;
这是我更改的唯一代码。
我在问题上留下的日志是第一个使用正确参数的调用,该日志记录了正确的结果。第二个调用(应该是真正的Studio调用)由于配置错误而失败。