我已经开发了一个社区连接器到我拥有的软件,我们开发了休息服务来向datastudio提供数据 . 根据配置,模式是动态的,因此Web服务在配置时提供模式 . 如果我配置连接器,它会正确检索数据集,但是当我尝试生成报告时,它会给出错误 .
以下是连接器gs .
function getSchema(request) {
var url = [
'https://www.ebeetask-testing.com:8181/dynamicForms-rest/webresources/DataStudio/taskSchema/',
request.configParams.task,
'/',
request.configParams.form,
'/',
request.configParams.username
];
var credentials = request.configParams.username+ ":" + request.configParams.password;
var auth = "Basic " + Utilities.base64Encode(credentials);
var headers = {
'Authorization': auth
};
var options =
{
"method" : "get",
"headers": headers,
};
// Fetch the data.
// By default URL fetch will throw an exception if the response code indicates failure.
var response = UrlFetchApp.fetch(url.join(''),options);
var schema = JSON.parse(response.getContentText());
return schema;
}
function getData(request) {
// Craft URL to fetch weather forecast data using OpenWeatherMap API.
var url = [
'https://www.ebeetask-testing.com:8181/dynamicForms-rest/webresources/DataStudio/projectTask/',
request.configParams.project,
'/',
request.configParams.task,
'/',
request.configParams.form,
'/',
request.configParams.username
];
var credentials = request.configParams.username+ ":" +
request.configParams.password;
var auth = "Basic " + Utilities.base64Encode(credentials);
var headers = {
'Authorization': auth
};
var options =
{
"method" : "get",
"headers": headers,
};
// Fetch the data.
// By default URL fetch will throw an exception if the response code indicates failure.
var response = UrlFetchApp.fetch(url.join(''),options);
var forecast = JSON.parse(response.getContentText());
return forecast;
}
function getConfig(request) {
var config = {
configParams: [
{
name: 'username',
displayName: 'Usuario',
helpText: 'Ingrese el usuario de ebeeTask',
},
{
name: 'password',
displayName: 'Contraseña',
helpText: 'Ingrese la contraseña de ebeeTask',
},
{
name: 'project',
displayName: 'Proyecto',
helpText: 'Nombre del proyecto',
},
{
name: 'task',
displayName: 'Tarea',
helpText: 'Tarea a consultar',
},
{
name: 'form',
displayName: 'Sección',
helpText: 'Sección de tarea a consultar',
}
]
};
return config;
}
function getAuthType() {
var response = {
"type": "NONE"
};
return response;
}
根据webservices响应,以下是架构的json:
{
"schema": [
{
"dataType": "STRING",
"name": "Nombre",
"label": "Nombre"
},
{
"dataType": "STRING",
"name": "Tipo documento",
"label": "Tipo documento"
},
{
"dataType": "STRING",
"name": "Tipo trx",
"label": "Tipo trx"
},
{
"dataType": "NUMBER",
"name": "Valor",
"label": "Valor"
},
{
"dataType": "NUMBER",
"name": "Valor a pagar",
"label": "Valor a pagar"
},
{
"dataType": "STRING",
"name": "taskName",
"label": "Nombre de la tarea"
},
{
"dataType": "STRING",
"name": "userId",
"label": "Usuario"
},
{
"dataType": "STRING",
"name": "formName",
"label": "Nombre del formulario"
},
{
"dataType": "STRING",
"name": "projectName",
"label": "Nombre del projecto"
},
{
"dataType": "STRING",
"name": "correlationID",
"label": "Identificador de correlación"
},
{
"dataType": "STRING",
"name": "assignationDate",
"label": "Fecha asignación"
},
{
"dataType": "STRING",
"name": "status",
"label": "Estado tarea"
},
{
"dataType": "STRING",
"name": "internalId",
"label": "Identificador de tarea"
}
]
}
和getData webservice响应:
{
"schema": [
{
"dataType": "STRING",
"name": "Nombre",
"label": "Nombre"
},
{
"dataType": "STRING",
"name": "Tipo documento",
"label": "Tipo documento"
},
{
"dataType": "STRING",
"name": "Tipo trx",
"label": "Tipo trx"
},
{
"dataType": "NUMBER",
"name": "Valor",
"label": "Valor"
},
{
"dataType": "NUMBER",
"name": "Valor a pagar",
"label": "Valor a pagar"
},
{
"dataType": "STRING",
"name": "taskName",
"label": "Nombre de la tarea"
},
{
"dataType": "STRING",
"name": "userId",
"label": "Usuario"
},
{
"dataType": "STRING",
"name": "formName",
"label": "Nombre del formulario"
},
{
"dataType": "STRING",
"name": "projectName",
"label": "Nombre del projecto"
},
{
"dataType": "STRING",
"name": "correlationID",
"label": "Identificador de correlación"
},
{
"dataType": "STRING",
"name": "assignationDate",
"label": "Fecha asignación"
},
{
"dataType": "STRING",
"name": "status",
"label": "Estado tarea"
},
{
"dataType": "STRING",
"name": "internalId",
"label": "Identificador de tarea"
}
],
"cachedData": false,
"rows": [
{
"values": [
"",
"",
"",
"",
"",
"Calculo expenses",
"kharlosj@gmail.com",
"Expenses",
"Pruebas integrales firefly",
"0001",
"3\/24\/18 1:34 AM",
"Ingreso Información",
"b431a41f-0831-454a-8181-7c096c978c08"
]
},
{
"values": [
"",
"",
"",
"",
"",
"Calculo expenses",
"raquel.canon@firefly-e.com",
"Expenses",
"Pruebas integrales firefly",
"35533497",
"3\/21\/18 9:16 PM",
"Annulled",
"66d00f93-4727-489e-b1a0-2d7d85d2a412"
]
},
{
"values": [
"",
"",
"",
"",
"",
"Calculo expenses",
"diego.convers@firefly-e.com",
"Expenses",
"Pruebas integrales firefly",
"212111",
"3\/21\/18 8:35 PM",
"Annulled",
"06a0993b-553b-4fd5-bc09-364fc6c026ed"
]
},
{
"values": [
"",
"",
"",
"",
"",
"Calculo expenses",
"diego.convers@firefly-e.com",
"Expenses",
"Pruebas integrales firefly",
"0001",
"3\/21\/18 9:00 PM",
"Annulled",
"f0159b70-e430-4d5b-8377-4b4f1426c5e8"
]
},
{
"values": [
"",
"",
"",
"",
"",
"Calculo expenses",
"diego.convers@firefly-e.com",
"Expenses",
"Pruebas integrales firefly",
"SITIO2-10-10-2018",
"3\/24\/18 4:01 PM",
"Annulled",
"4d65bcb4-947b-46f3-8b92-6354e9ff734a"
]
},
{
"values": [
"",
"",
"",
"",
"",
"Calculo expenses",
"diego.convers@firefly-e.com",
"Expenses",
"Pruebas integrales firefly",
"EXPENSES",
"3\/21\/18 8:49 PM",
"Annulled",
"1863de4d-f089-4a6b-a0af-f86d002cfa64"
]
},
{
"values": [
"ergfgsd",
"CC",
"compra",
"5000.0",
"5000.0",
"Calculo expenses",
"diego.convers@firefly-e.com",
"Expenses",
"Pruebas integrales firefly",
"35533497",
"3\/24\/18 1:39 AM",
"Annulled",
"cc4625c5-806e-4751-9840-efc230708702"
]
},
{
"values": [
"",
"",
"",
"",
"",
"Calculo expenses",
"diego.convers@firefly-e.com",
"Expenses",
"Pruebas integrales firefly",
"0001",
"3\/21\/18 8:56 PM",
"Annulled",
"093a180e-292d-434a-ac92-3466b74759ea"
]
},
{
"values": [
"",
"",
"",
"",
"",
"Calculo expenses",
"diego.convers@firefly-e.com",
"Expenses",
"Pruebas integrales firefly",
"TEST",
"3\/21\/18 8:40 PM",
"Annulled",
"dd830e57-9f5e-4d8b-8278-2dfd931f7784"
]
},
{
"values": [
"Compra pasajes ",
"CC",
"compra",
"200000.0",
"200000.0",
"Calculo expenses",
"diego.convers@firefly-e.com",
"Expenses",
"Pruebas integrales firefly",
"0002",
"3\/21\/18 9:04 PM",
"Annulled",
"36392415-18d4-40e1-aa7f-2b4df64617bd"
]
},
{
"values": [
"",
"",
"",
"",
"",
"Calculo expenses",
"kharlosj@gmail.com",
"Expenses",
"Pruebas integrales firefly",
"222222",
"3\/24\/18 1:46 AM",
"Ingreso Información",
"cd8cc4cb-6382-401e-bc09-f809c9553ef8"
]
},
{
"values": [
"Pasajes",
"NIT",
"compra",
"200000.0",
"180000.0",
"Calculo expenses",
"diego.convers@firefly-e.com",
"Expenses",
"Pruebas integrales firefly",
"79981957",
"3\/27\/18 10:27 PM",
"Ingreso Información",
"91b4b05c-cd32-4135-88b2-b07dd885ac57"
]
}
]
}
我在开发中缺少什么?
1 回答
好的,发现了错误 . 该请求带来了要返回的动态字段结构,开发了服务以返回静态模式,因此重新构造它以接收来自请求的字段以响应动态模式和行结构 .