【问题标题】:Accessing Highrise Data through API using GAS使用 GAS 通过 API 访问高层数据
【发布时间】:2014-09-07 09:50:53
【问题描述】:

正如标题所说,我在使用 Google 脚本通过其 API 访问 Highrise 中的数据时遇到问题。我是谷歌脚本的新手,所以有些功能对我来说并不完全清楚。我知道对于 API 的实际使用,我将使用UrlFetchApp.fetch(url),并且我将使用的 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: Access denied. ]”我认为这意味着我没有正确传递凭据。谁能告诉我我做错了什么?在这一步之后,我对获取数据相当有信心,这是让我得到授权的原因。

【问题讨论】:

    标签: javascript curl google-apps-script highrise


    【解决方案1】:

    试试这个,注意“基本”后面的空格

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

    【讨论】:

    • 这解决了身份验证问题,非常感谢。在来到 StackExchange 之前没有亲自尝试过,我感到很愚蠢。
    猜你喜欢
    • 1970-01-01
    • 2014-11-24
    • 2014-10-01
    • 2021-12-31
    • 1970-01-01
    • 2020-11-10
    • 2018-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多