Per Google Apps Script documentation Apps Scrip can connect to public APIs.
Is there an example of Apps Script connecting to Rally WSAPI?
NOTE: Troubleshooting 3rd party APIs and writing and debugging custom code is outside of Rally support's scope. The example below comes as is.
1. Basic authentication:
function myFunction() { var username = "<USERNAME>" var password = "<PASSWORD>" var headers={ "contentType": "application/json", "headers": { "Authorization": "Basic " + Utilities.base64Encode(username + ":" + password) } } var url = 'https://rally1.rallydev.com/slm/webservice/v2.0/defect?' ??? + 'workspace=https://rally1.rallydev.com/slm/webservice/v2.0/workspace/<WORKSPACE_OID>' ??? + '&pagesize=200' ??? + '&fetch=FormattedID' ??? + '&query=((State = Submitted)OR(State = Open))'; var response = UrlFetchApp.fetch(url,headers); Logger.log(response); }
2. API Key:
ApiKey is supported in production (rally1.rallydev.com). It is currently not supported on Sandbox (sandbox.rallydev.com) and in On-Premises. A zsessionid header is set to an ApiKey.
function myFunction() { var headers={ "contentType": "application/json", "headers":{"zsessionid":"<API Key - include the underscore before the key>"} } var url = 'https://rally1.rallydev.com/slm/webservice/v2.0/defect?' ??? + 'workspace=https://rally1.rallydev.com/slm/webservice/v2.0/workspace/<WORKSPACE_OID>' ??? + '&pagesize=200' ??? + '&fetch=FormattedID' ??? + '&query=((State = Submitted)OR(State = Open))'; var response = UrlFetchApp.fetch(url,headers); Logger.log(response); }
Troubleshooting tips:
Test your query directly in WS API and in the browser before using it with Google Apps Script.
For example, here is a direct endpoint that returns children of PortfolioItem/Initiative:
https://rally1.rallydev.com/slm/webservice/v2.0/portfolioitem/initiative/<INITIATIVE_OID/children?workspace=https://rally1.rallydev.com/slm/webservice/v2.0/workspace/<WORKSPACE_OID>&fetch=FormattedID
Here is the equivalent query in Google Apps Script
function myFunction() { var headers={ "contentType": "application/json", "headers":{"zsessionid":"<API Key - include the underscore before the key>"} } var url = 'https://rally1.rallydev.com/slm/webservice/v2.0/portfolioitem/initiative/<INITIATIVE_OID>/children?' + 'workspace=https://rally1.rallydev.com/slm/webservice/v2.0/workspace/<WORKSPACE_OID>' + '&pagesize=200' + '&fetch=FormattedID'; var response = UrlFetchApp.fetch(url,headers); Logger.log(response); }