如何使用身份验证令牌从CATSone API中提取数据?

如何使用身份验证令牌从CATSone API中提取数据?,api,google-apps-script,urlfetch,Api,Google Apps Script,Urlfetch,我对编码一无所知。我正在尝试用Klipfolio构建一个仪表板。我正在使用CATSone API将数据从CATSone拉到Klifolio。然而,我一次只能获取100行数据,这意味着我必须提取2600次数据 我现在正试图构建一个脚本,通过Google脚本编辑器从API获取数据。然而,由于我在这方面没有经验,我只是在尝试一些东西。我看了一些视频,也是本·柯林斯的。基础很简单,我知道他在做什么 但是,我在放置API密钥时遇到了一个问题 var API_KEY = 'key' fun

我对编码一无所知。我正在尝试用Klipfolio构建一个仪表板。我正在使用CATSone API将数据从CATSone拉到Klifolio。然而,我一次只能获取100行数据,这意味着我必须提取2600次数据

我现在正试图构建一个脚本,通过Google脚本编辑器从API获取数据。然而,由于我在这方面没有经验,我只是在尝试一些东西。我看了一些视频,也是本·柯林斯的。基础很简单,我知道他在做什么

但是,我在放置API密钥时遇到了一个问题

    var API_KEY = 'key'

    function callCATSone(){

//Call the CATSone API for all candidate list
var response = UrlFetchApp.fetch("https://api.catsone.nl/v3/candidates");
Logger.log(response.getContentText());                                 

// URL and params for the API
var url = 'https://api.catsone.nl/v3/candidates';

 var params = {
 'method': 'GET',
 'muteHttpExceptions': true,
'headers': {
'Authorization': 'key ' + apikey
}
};

// call the API
var response = UrlFetchApp.fetch(url, params);
var data = response.getContentText();
var json = JSON.parse(data);
}
最后,我想将所有候选名单数据传输到我的工作表中。因此,我使用授权密钥调用API。在那之后,我将处理数据,但这是以后的事情。我现在遇到的第一个问题是失败代码:

“维尔佐克·沃尔是米斯卢克。Foutcode:401。Ingekorte服务器反应:{“消息”:“无效凭据”。}(Gebruik de optie muteHttpExceptions om de volledige reactie te onderzoeken.)(regel 6,bestand'Code')

我希望在我的工作表中列出CATSone的所有数据


有人知道我是如何做到这一点的吗?

有两个更改可以修复凭据错误:

授权头应该是
Authorization:'Token'+yourApiKey
,而不是
'key'
,请参阅v3 API文档

在您的情况下,API密钥存储在全局变量
API_-key
中,您应该像这样引用它,而不是作为
apikey
(除非您的示例中有输入错误或缺少一些代码):
授权:“令牌”+API_-key

顺便说一句,它可能应该为
UrlFetchApp.fetch()
方法调用
application/json
设置
Content-Type
头或
contentType
参数,作为
UrlFetchApp.fetch()
请求内容类型默认值为
application/x-www-form-urlencoded

如果您打算继续使用API,阅读这篇MDN文章将是有益的:


希望这有帮助

嗨,奥列格,谢谢你的快速回复。我尝试添加授权:“令牌”+API_密钥变量,就像您告诉我的那样。然而,它仍然给我同样的错误。嗨,瑞克!尝试添加如下标题
Authorization:“Token”
-最初,我将符号解释为变量符号,如果这不起作用,请检查您的子域是否注册在.nl zone中。Rick,我再次查看了您的代码,一个问题-您的第一个
UrlFetchApp
调用是否在实际代码中被注释掉或删除?似乎您发出了两次请求—一次未经授权,然后才使用(但由于第一次调用未设置
muteHttpExceptions
param,因此失败并出现错误)。如果是这样,请忽略前面的注释,在注释掉/删除第一个请求后尝试初始解决方案。嗨,Oleg,感谢您的快速回答。我添加了授权:“令牌”+API_密钥,就像你告诉我的那样。我还将var响应更改为UrlFetchApp.fetch(url,params),并设置var参数:“method”:“GET”muteHttpExceptions':true,'header':{'Authorization':'Token'+API_KEY}};我现在得到了数据,所以它似乎在工作。非常感谢你!你好,瑞克-太好了,很高兴一切顺利!作为最佳实践,请始终确保将
muteHttpExceptions
作为参数包含在
UrlFetchApp
调用中-这将稍微简化调试过程:)