Created
March 24, 2014 08:28
-
-
Save elsewhat/9736348 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function init(consumerKey, consumerSecret,scope,expiration,appName){ | |
_authorizeToTrello(consumerKey,consumerSecret,scope,expiration,appName); | |
} | |
function _authorizeToTrello(consumerKey,consumerSecret,scope,expiration,appName) { | |
var oauthConfig = UrlFetchApp.addOAuthService("trello"); | |
oauthConfig.setAccessTokenUrl("https://trello.com/1/OAuthGetAccessToken"); | |
oauthConfig.setRequestTokenUrl("https://trello.com/1/OAuthGetRequestToken"); | |
oauthConfig.setAuthorizationUrl("https://trello.com/1/OAuthAuthorizeToken?scope="+scope+"&expiration="+expiration+"&name="+appName); | |
//From | |
// https://trello.com/1/appKey/generate | |
oauthConfig.setConsumerKey(consumerKey); | |
oauthConfig.setConsumerSecret(consumerSecret); | |
} | |
function getBoardsData(boardId, queryParameters){ | |
var requestParams = { | |
"method": "GET", | |
"oAuthServiceName": "trello", | |
"oAuthUseToken": "always", | |
}; | |
var url= "https://api.trello.com/1/boards/" + boardId + "?"+queryParameters; | |
Logger.log("TrelloAPI: Fetching url " + url); | |
var jsondata = UrlFetchApp.fetch(url, requestParams); | |
var object = JSON.parse(jsondata.getContentText()); | |
return object; | |
} | |
function getBoard(boardId){ | |
return getBoardsData(boardId, "lists=open&list_fields=name&fields=name,desc,prefs,labelNames"); | |
} | |
function getBoardMembers(boardId){ | |
var requestParams = { | |
"method": "GET", | |
"oAuthServiceName": "trello", | |
"oAuthUseToken": "always", | |
}; | |
var url= "https://api.trello.com/1/boards/" + boardId + "/members"; | |
Logger.log("TrelloAPI: Fetching url " + url); | |
var jsondata = UrlFetchApp.fetch(url, requestParams); | |
var object = JSON.parse(jsondata.getContentText()); | |
return object; | |
} | |
function getBoardsForOrg(orgId){ | |
var requestParams = { | |
"method": "GET", | |
"oAuthServiceName": "trello", | |
"oAuthUseToken": "always", | |
}; | |
var url= "https://api.trello.com/1/organizations/" + orgId+"/?boards=open&board_fields=name,desc,prefs,labelNames"; | |
Logger.log("TrelloAPI: Fetching url " + url); | |
var jsondata = UrlFetchApp.fetch(url, requestParams); | |
var object = JSON.parse(jsondata.getContentText()); | |
return object; | |
} | |
function createChecklistForCard(cardId, name){ | |
var payload = | |
{ | |
"name" : name, | |
}; | |
var requestParams = { | |
"method": "POST", | |
"oAuthServiceName": "trello", | |
"oAuthUseToken": "always", | |
"muteHttpExceptions":false, | |
"payload":payload | |
}; | |
var url= "https://api.trello.com/1/cards/"+cardId+"/checklists"; | |
Logger.log("TrelloAPI: Fetching url " + url); | |
var jsondata = UrlFetchApp.fetch(url, requestParams); | |
var object = JSON.parse(jsondata.getContentText()); | |
return object; | |
} | |
function createChecklistItem(checklistId, name, checked){ | |
var payload = | |
{ | |
"name" : name, | |
"checked": checked | |
}; | |
var requestParams = { | |
"method": "POST", | |
"oAuthServiceName": "trello", | |
"oAuthUseToken": "always", | |
"muteHttpExceptions":false, | |
"payload":payload | |
}; | |
var url= "https://api.trello.com/1/checklists/"+checklistId + "/checkItems"; | |
Logger.log("TrelloAPI: Fetching url " + url); | |
var jsondata = UrlFetchApp.fetch(url, requestParams); | |
var object = JSON.parse(jsondata.getContentText()); | |
return object; | |
} | |
function createBoard(name, desc, idOrganization){ | |
var payload = | |
{ | |
"name" : name, | |
"desc": desc, | |
}; | |
if(idOrganization){ | |
payload["idOrganization"]=idOrganization; | |
payload["prefs_permissionLevel"]="org"; | |
} | |
Logger.log(payload); | |
var requestParams = { | |
"method": "POST", | |
"oAuthServiceName": "trello", | |
"oAuthUseToken": "always", | |
"muteHttpExceptions":false, | |
"payload":payload | |
}; | |
var url= "https://api.trello.com/1/boards/"; | |
Logger.log("TrelloAPI: Fetching url " + url); | |
var jsondata = UrlFetchApp.fetch(url, requestParams); | |
var object = JSON.parse(jsondata.getContentText()); | |
return object; | |
} | |
//objLabelNames should be {"green":"Name1","yellow":"Name2","orange":"Name3","red":"Name4","purple":"Name5", "blue":"Name6"} | |
function updateBoard(board_id, objLabelNames,name,desc){ | |
var payload = | |
{ | |
}; | |
if(name){ | |
payload["name"]=name; | |
} | |
if(desc){ | |
payload["desc"]=desc; | |
} | |
if(objLabelNames){ | |
if(objLabelNames.green){ | |
payload["labelNames/green"]=objLabelNames.green; | |
} | |
if(objLabelNames.yellow){ | |
payload["labelNames/yellow"]=objLabelNames.yellow; | |
} | |
if(objLabelNames.orange){ | |
payload["labelNames/orange"]=objLabelNames.orange; | |
} | |
if(objLabelNames.red){ | |
payload["labelNames/red"]=objLabelNames.red; | |
} | |
if(objLabelNames.purple){ | |
payload["labelNames/purple"]=objLabelNames.purple; | |
} | |
if(objLabelNames.blue){ | |
payload["labelNames/blue"]=objLabelNames.blue; | |
} | |
} | |
Logger.log(payload); | |
var requestParams = { | |
"method": "PUT", | |
"oAuthServiceName": "trello", | |
"oAuthUseToken": "always", | |
"muteHttpExceptions":false, | |
"payload":payload | |
}; | |
var url= "https://api.trello.com/1/boards/"+board_id; | |
Logger.log("TrelloAPI: Fetching url " + url); | |
var jsondata = UrlFetchApp.fetch(url, requestParams); | |
var object = JSON.parse(jsondata.getContentText()); | |
return object; | |
} | |
function updateBoardPrefs(board_id, backgroundColor){ | |
var payload = | |
{ | |
value:"grey" | |
}; | |
Logger.log(payload); | |
var requestParams = { | |
"method": "PUT", | |
"oAuthServiceName": "trello", | |
"oAuthUseToken": "always", | |
"muteHttpExceptions":false, | |
"payload":payload | |
}; | |
var url= "https://api.trello.com/1/boards/"+board_id+"/prefs/background"; | |
Logger.log("TrelloAPI: Fetching url " + url); | |
var jsondata = UrlFetchApp.fetch(url, requestParams); | |
var object = JSON.parse(jsondata.getContentText()); | |
return object; | |
} | |
function updateBoardSelfJoin(board_id, bSelfJoin){ | |
var payload = | |
{ | |
value:bSelfJoin | |
}; | |
Logger.log(payload); | |
var requestParams = { | |
"method": "PUT", | |
"oAuthServiceName": "trello", | |
"oAuthUseToken": "always", | |
"muteHttpExceptions":false, | |
"payload":payload | |
}; | |
var url= "https://api.trello.com/1/boards/"+board_id+"/prefs/selfJoin"; | |
Logger.log("TrelloAPI: Fetching url " + url); | |
var jsondata = UrlFetchApp.fetch(url, requestParams); | |
var object = JSON.parse(jsondata.getContentText()); | |
return object; | |
} | |
function createCard(boardId, idList, name, desc, closed, labels, idMembers, idAttachmentCover, pos, due){ | |
var payload = | |
{ | |
"boardId" : boardId, | |
"idList": idList, | |
"name" : name, | |
"desc": desc, | |
"labels":labels, | |
}; | |
if(due){ | |
payload["due"]=due; | |
} | |
Logger.log(payload); | |
var requestParams = { | |
"method": "POST", | |
"oAuthServiceName": "trello", | |
"oAuthUseToken": "always", | |
"muteHttpExceptions":false, | |
"payload":payload | |
}; | |
var url= "https://api.trello.com/1/cards/"; | |
Logger.log("TrelloAPI: Fetching url " + url); | |
var jsondata = UrlFetchApp.fetch(url, requestParams); | |
var object = JSON.parse(jsondata.getContentText()); | |
return object; | |
} | |
function updateCardLabels(cardId, labels){ | |
var payload = | |
{ | |
"labels":labels, | |
}; | |
Logger.log(payload); | |
var requestParams = { | |
"method": "PUT", | |
"oAuthServiceName": "trello", | |
"oAuthUseToken": "always", | |
"muteHttpExceptions":false, | |
"payload":payload | |
}; | |
var url= "https://api.trello.com/1/cards/"+cardId; | |
Logger.log("TrelloAPI: Fetching url " + url); | |
var jsondata = UrlFetchApp.fetch(url, requestParams); | |
var object = JSON.parse(jsondata.getContentText()); | |
return object; | |
} | |
function getEstimateFromTrelloString(title){ | |
var regex = /\(([0-9]+)\)/; | |
var matches = title.match(regex); | |
if(matches != null){ | |
return Number(matches[1]); | |
}else { | |
return 0; | |
} | |
} | |
function getTrelloStringWithoutEstimate(title){ | |
var regex1=/\([^)]+\)/; | |
var regex2 = /\[([^]+)\]/; | |
title = title.replace(regex1,""); | |
title = title.replace(regex2,""); | |
return title.trim(); | |
} | |
function getUsedFromTrelloString(title){ | |
var regex = /\[([0-9]+)\]/; | |
var matches = title.match(regex); | |
if(matches != null){ | |
return Number(matches[1]); | |
}else { | |
return 0; | |
} | |
} | |
function getRemainingFromTrelloString(title){ | |
var estimate = getEstimateFromTrelloString(title); | |
if(estimate!=0){ | |
var used = getUsedFromTrelloString(title); | |
return estimate-used; | |
}else { | |
return 0; | |
} | |
} | |
function testGetEstimateFromTrelloString(text){ | |
var estimate = getEstimateFromTrelloString(text); | |
Logger.log("Estimate:" + estimate); | |
} | |
function testGetUsedFromTrelloString(text){ | |
var used = getUsedFromTrelloString(text); | |
Logger.log("Used:" + used); | |
} | |
function testGeRemainingFromTrelloString(text){ | |
var remaining = getRemainingFromTrelloString(text); | |
Logger.log("Remaining:" + remaining); | |
} | |
function testGetTrelloStringWithoutEstimate(text){ | |
var str = getTrelloStringWithoutEstimate(text); | |
Logger.log("Withouth estimates:" + str); | |
} | |
function test(){ | |
var testTitle1 = "Change WebDynpro to store in cookie a dynamic table of fields instead of dictionary structure (95) [2]"; | |
testGetEstimateFromTrelloString(testTitle1); | |
testGetUsedFromTrelloString(testTitle1); | |
testGeRemainingFromTrelloString(testTitle1); | |
testGetTrelloStringWithoutEstimate(testTitle1); | |
var testTitle2 = "title with nothing in it"; | |
testGetEstimateFromTrelloString(testTitle2); | |
testGetUsedFromTrelloString(testTitle2); | |
testGeRemainingFromTrelloString(testTitle2); | |
testGetTrelloStringWithoutEstimate(testTitle2); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment