Skip to content

Instantly share code, notes, and snippets.

@elsewhat
Created March 24, 2014 08:28
Show Gist options
  • Save elsewhat/9736348 to your computer and use it in GitHub Desktop.
Save elsewhat/9736348 to your computer and use it in GitHub Desktop.
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