当我尝试建立Google Data Studio社区连接器时遇到问题。具体来说,一切正常,如果使用身份验证的USER_PASS选项,则可以在浏览器屏幕上看到渲染的数据,但是如果使用PATH_USER_PASS,则不能正确渲染。当我查看堆栈跟踪时,它甚至都没有显示getData()函数已执行。有人可以帮我吗?
从清单文件中发布以下代码,然后点击CONNECT和EXPLORE,将成功给出一行数据。
当我仅将AuthType更改为USER_PASS时,也会成功。
但是,当我仅将AuthType更改为PATH_USER_PASS时,它将中断。
请注意,我将事情硬编码到我的getData和getSchema中,因此运行此代码不需要任何用户输入。获取数据的过程不以任何形式绑定到身份验证过程。这表明这可能是Google Data Studio的错误之一。
正如我所说,当我切换到PATH_USER_PATH身份验证方法时,getData()函数甚至都没有运行。
任何帮助将不胜感激!!!!
main.js:
var cc = DataStudioApp.createCommunityConnector();
function getAuthType() {
return cc.newAuthTypeResponse()
.setAuthType(cc.AuthType.NONE)
.build();
}
function isAuthValid() {
return true;
}
function setCredentials(request) {}
function getConfig(request) {
var config = cc.getConfig();
return config.build();
}
function getSchema(request) {
var fields = getFields(request).build();
return { schema: fields };
}
function responseToRows(requestedFields, response) {
return response.map(function(submissions) {
var row = [];
requestedFields.asArray().forEach(function (field) {
switch (field.getId()) {
case 'student_name':
return row.push(submissions.student_name);
case 'student_age':
return row.push(submissions.student_age);
case 'student_school_year':
return row.push(submissions.student_school_year);
case 'submissionDate':
return row.push(submissions.__system.submissionDate)
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);
// fake response from hardCodedData.
var hardCodedData ='{"value":[{"__id":"uuid:3ab058df-5039-41cd-b16b-5c21f01bf60b","student_name":"Pieter Benjamin","student_age":21,"student_school_year":"Senior","select_student_school_year":"senior","__system":{"submissionDate":"2020-10-10T21:02:40.428Z","submitterId":"532","submitterName":"Pieter Benjamin","attachmentsPresent":0,"attachmentsExpected":0,"status":null},"meta":{"instanceID":"uuid:3ab058df-5039-41cd-b16b-5c21f01bf60b"}}],"@odata.context":"https://sandbox.central.getodk.org/v1/projects/124/forms/odata%20connector%20scheme.svc/$metadata#Submissions"}'
var parsedResponse = JSON.parse(hardCodedData).value;
var rows = responseToRows(requestedFields, parsedResponse);
return {
schema: requestedFields.build(),
rows: rows
};
}
// hard coded schema
function getFields(request) {
var cc = DataStudioApp.createCommunityConnector();
var fields = cc.getFields();
var types = cc.FieldType;
var aggregations = cc.AggregationType;
fields.newDimension()
.setId('student_name')
.setType(types.TEXT);
fields.newMetric()
.setId('student_age')
.setType(types.NUMBER);
fields.newMetric()
.setId('student_school_year')
.setType(types.TEXT);
fields.newDimension()
.setId('submissionDate')
.setType(types.YEAR_MONTH_DAY);
return fields;
}
function isAdminUser() {
return true;
}
appsscript.json:
{
"timeZone": "America/Los_Angeles",
"dependencies": {
},
"webapp": {
"access": "ANYONE",
"executeAs": "USER_ACCESSING"
},
"oauthScopes": ["https://www.googleapis.com/auth/script.external_request"],
"runtimeVersion": "V8",
"dataStudio": {
"name": "ODK central API connector",
"logoUrl": "https://getodk-a3b1.kxcdn.com/uploads/default/original/2X/3/381d364b5dd1069f6540bbd7a38ea48f11023ae9.jpg",
"company": "UW Impact++",
"companyUrl": "https://sites.google.com/view/udubimpact",
"addonUrl": "https://github.com/UDub-Impact/OData-Connector/blob/master/readme.md",
"supportUrl": "https://github.com/googledatastudio/community-connectors/issues",
"description": "Get your data from ODK central",
"sources": ["npm"],
"templates": {
"default": "1twu0sHjqR5dELAPyGJcw4GS3-D0_NTrQ"
}
}
}
答案 0 :(得分:0)
从2020年1月3日起,无法使用PATH_USER_PASS的问题已解决。我没有更改任何代码,但现在可以使用身份验证选项。