我正在尝试使用Google App脚本引擎将Rally功能添加到Google Apps Sheets。除了在尝试与Rally连接的Google Apps系统上的用户管理身份验证外,一切看起来都相当简单。谷歌的UrlFetchApp.fetch()函数似乎可以解决问题,除了Auth位。有什么建议吗?
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 :(得分:2)
如果我理解正确,对于外部javascript Rally Apps,您需要使用LoginKey。此密钥必须绑定到只读(查看者)帐户(即帐户不能具有编辑者权限)。然而,这种方法存在一些安全问题(如链接所述)。
答案 1 :(得分:1)
根据this question的答案,集会网络服务使用基本身份验证。您应该检查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。