类型错误:response.getContentText不是一个函数应用脚本。

问题描述 投票:-1回答:1

现在我正在为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}];
    }
google-apps-script google-data-studio
1个回答
2
投票

问题:你正在使用Google Data studio的社区连接器,在半路上,但当我移动到我的项目上获取数据时,我得到一个错误:TypeError: response.getContentText不是一个..:

你正在使用 getContentText() 两次。

getContentText() 是一种方法。HTTPResponse的值,而你正试图用它来使用由 fetchDataFromApi:

  • JSON.parse(response.getContentText())

这当然不是一个 HTTPResponse.

解决办法。

我不知道你想用什么方法来解决 HTTPResponse但我建议你把回复原封不动地发回。fetchDataFromApi:

function fetchDataFromApi(request) {
  // Rest of code
  return UrlFetchApp.fetch(url, options);
}

参考。

© www.soinside.com 2019 - 2024. All rights reserved.