使用GAS通过API访问高层数据

时间:2014-07-16 18:26:08

标签: javascript curl google-apps-script highrise

正如标题所说,我在使用Google Script通过API访问Highrise中的数据时遇到问题。我是google脚本的新手,所以有些功能对我来说并不完全清楚。我了解到,对于API的实际使用,我将使用UrlFetchApp.fetch(url),我将使用的网址是foocompanyname.highrisehq.com/partofhighriseyouwishtoaccess.xml。从那里我失去了。 API documentation解释了使用curl进行身份验证的过程(我之前从未使用过的东西),我无法想到Google Script中的类似功能来完成此任务。

以下是他们用来简单获取访问权限的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:访问被拒绝。 ]"我假设这意味着我没有正确传递凭据。谁能告诉我我做错了什么?在这一步之后,我对获取数据非常有信心,这是获得我的授权。

1 个答案:

答案 0 :(得分:0)

试试这个,注意"基本"

之后的空格
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);