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

Accessing Highrise Data through API using GAS

本文关键字:高层 数据 访问 API GAS 通过 使用      更新时间:2023-09-26

正如标题所说,我在使用Google Script通过API访问Highrise中的数据时遇到了问题。我是新的谷歌脚本,所以一些功能不是完全清楚我。我明白,对于API的实际使用,我将使用UrlFetchApp.fetch(url),我将使用的url是foocompanyname.highrisehq.com/partofhighriseyouwishtoaccess.xml。然而,从那里我迷路了。API文档解释了使用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"后面的空格

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);