正如标题所示,我在使用 Google 脚本通过 API 访问 Highrise 中的数据时遇到问题。我是谷歌脚本的新手,所以有些功能对我来说并不完全清楚。据我所知,对于 API 的实际使用,我将使用 UrlFetchApp.fetch(url)
并且我将使用的 url 是 foocompanyname.highrisehq.com/partofhighriseyouwishtoaccess.xml
。然而从那里我迷失了。 API documentation 解释了使用curl(我以前从未使用过的东西)进行身份验证的过程,我想不出Google 脚本中的类似函数可以完成此操作。
这是他们用来简单地获取访问权限的curl示例
curl -u 605b32dd:X https://example.highrisehq.com/people/1.xml
这是我正在使用的函数的一部分,它试图完成同样的事情。整个功能旨在获取正在使用其凭据的用户可见的公司的所有注释。
function obtainData(){
//enter subject-id of admin
// |
// V
var userid = "123456789"
var payload =
{
"action" : "/companies.xml"
};
var options =
{
"headers" : { "USER-AGENT" : "name@company.com",
"Authorization" : "Basic" + Utilities.base64Encode( "APIkey_from_Highrise_website" + ":" + "Dummy_password" )
},
"method" : "GET",
"payload" : payload,
muteHttpExceptions : true
};
var xmlCompanies = UrlFetchApp.fetch("https://foocompany.highrisehq.com/companies.xml", options).getContentText();
Logger.log(xmlCompanies);
但是,当我运行此命令时,我收到错误“[HTTP Basic:访问被拒绝。 ]”,我认为这意味着我没有正确传递凭据。有人可以告诉我我做错了什么吗?在这一步之后,我对获取数据相当有信心,这是授权给我的。
最佳答案
试试这个,注意“Basic”后面的空格
function obtainData(){
//enter subject-id of admin
// |
// V
var userid = "123456789"
var payload =
{
"action" : "/companies.xml"
};
var options =
{
"headers" : { "USER-AGENT" : "name@company.com",
"Authorization" : "Basic " + Utilities.base64Encode( "APIkey_from_Highrise_website" + ":" + "Dummy_password" )
},
"method" : "GET",
"payload" : payload,
muteHttpExceptions : true
};
var xmlCompanies = UrlFetchApp.fetch("https://foocompany.highrisehq.com/companies.xml", options).getContentText();
Logger.log(xmlCompanies);
关于javascript - 使用 GAS 通过 API 访问高层数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24788048/