2013-04-30 65 views
1

我正在尝试使用Google App脚本引擎为Google Apps表添加拉力赛功能。除了在试图与Rally连接的Google Apps系统上管理用户的身份验证外,一切看起来相当简单。除了Auth位之外,Google的UrlFetchApp.fetch()函数似乎也能做到这一点。有什么建议么?如何从Google App脚本连接到拉力赛?

function RallyQuery(sz, order, fetch, stylesheet) 
{ 
    if (typeof fetch === "undefined"){ fetch = true; } 
    if (typeof stylesheet === "undefined"){ stylesheet = "/slm/doc/webservice/browser.xslsz";} 

    var result = "[null]"; 
    var query = "https://rally1.rallydev.com/slm/webservice/1.42/task?query=" + sz 
      + "&order=" + order 
      + "&fetch=" + fetch 
      + "&stylesheet=" + stylesheet; 

    result = UrlFetchApp.fetch(query); 

    return result; 
} 
+0

你是什么意思“似乎做伎俩”?您能否发现您遇到的特定错误或问题? – TronicZomB 2013-04-30 01:51:00

回答

1

根据对this question的回答,rally webservice使用基本认证。你应该检查web services documentation来验证。 (我不是一个注册的用户,所以我不能。)

这是你的RallyQuery如何可以重构包括基本身份验证:

function RallyQuery(sz, order, fetch, stylesheet) 
{ 
    if (typeof fetch === "undefined"){ fetch = true; } 
    if (typeof stylesheet === "undefined"){ stylesheet = "/slm/doc/webservice/browser.xslsz";} 

    var username = "USERNAME"; 
    var password = "PASSWORD"; 

    var result = "[null]"; 
    var url = "https://rally1.rallydev.com/slm/webservice/1.42/task" 
    var options = { 
     "query" : sz, 
     "order" : order, 
     "fetch" : fetch, 
     "stylesheet" : stylesheet, 
     "headers": { 
      "Authorization": "Basic " 
       + Utilities.base64Encode(username + ":" + password) 
       } 
    } 
    result = UrlFetchApp.fetch(url,options); 

    return result; 
} 

或者,你可能需要寻找到一个LoginKey

+0

Mogsdad - 这很棒。谢谢!至于登录密钥,拉力赛正在更新他们的API,2.0版本不支持密钥,但将在不久的将来。所以,虽然它对我没有用处,但任何在几个月内发现此问题的人都可能想要考虑这种可能性。 – CJM 2013-04-30 22:56:46

2

如果我理解正确,对于外部JavaScript Rally应用程序,您将需要使用LoginKey。该密钥必须与只读(查看器)帐户绑定(即帐户不能拥有编辑权限)。然而,这种方法存在一些安全问题(如链接所述)。

相关问题