现在我正在为Google Data studio做一个社区连接器,已经做了一半了,但是当我移动到我的项目上获取数据时,我得到一个错误:TypeError: response.getContentText is not a function app script。
已经尝试在应用程序脚本上禁用v8运行时,其他 "get "函数,但错误是一样的,它调用响应. "anything "一个非函数......
我对JSAppScript是个小菜鸟......有什么线索或例子我可以看一下吗? 谢谢。
function fetchDataFromApi(request){
var url = '***************'
var options = {
headers:{
'Api-token' : '******************'
}
}
var response = UrlFetchApp.fetch(url, options);
return JSON.parse(response.getContentText());
}
function formatData(response, requestedFields){
var item = response.getContentText().shift();
var row = requestedFields.asArray().map(function(field){
switch (field.getId()){
case 'analytics_campaign_name':
return item.analytics_campaign_name;
default:
return '';
}
});
return [{values: row}];
}
这两个函数都是在 getData()
:
function getData() {
// Rest of code
try {
console.log('Fetch Data Start');
var apiResponse = fetchDataFromApi(request);
var data = formatData(apiResponse, requestedFields);
} catch(e){
dataS.newUserError()
.setDebugText('Error Fetching data from API. err: ' + e)
.setText('Connector has ended whithout gettig the data.')
.throwException();
}
// Rest of code
}
我把函数response改成了这样。
function fetchDataFromApi(request){
*******
}
var response = JSON.parse(UrlFetchApp.fetch(url, options).getContentText());
console.log(response);
return response;
}
console.log(response); 从api返回数据很好,但在我的data studio上,现在只给我null字段......
在formatData()里面,当我把它记录下来的时候,response参数仍然是未定义的......。
function formatData(response, requestedFields){
console.log('response: ', response);
console.log('resquestedFields: ', requestedFields);
var item = response;
var row = requestedFields.asArray().map(function(field){
switch (field.getId()){
case 'analytics_campaign_name':
return item.analytics_campaign_name;
default:
return '';
}
});
return [{values: row}];
}
你正在使用 getContentText()
两次。
getContentText()
是一种方法。HTTPResponse的值,而你正试图用它来使用由 fetchDataFromApi
:
JSON.parse(response.getContentText())
这当然不是一个 HTTPResponse
.
我不知道你想用什么方法来解决 HTTPResponse
但我建议你把回复原封不动地发回。fetchDataFromApi
:
function fetchDataFromApi(request) {
// Rest of code
return UrlFetchApp.fetch(url, options);
}