Skip to content

Instantly share code, notes, and snippets.

@mrchypark
Last active May 25, 2018 09:28
Show Gist options
  • Save mrchypark/2eebf83edd1a65a19de92779bca2a9a6 to your computer and use it in GitHub Desktop.
Save mrchypark/2eebf83edd1a65a19de92779bca2a9a6 to your computer and use it in GitHub Desktop.
 트렐로 카드를 구글 sheet에 현황을 업데이트 해주는 gs
function onOpen() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var menuEntries = [ {name: "Update from Trello", functionName: "main"},];
ss.addMenu("Trello", menuEntries);
}
var api_key = "XXXXXX";
var api_token = "XXXXXX";
var board_id = "XXXXXX";
var sheetName = "sheet_name_where_you_want"
var url = "https://api.trello.com/1/";
var key_and_token = "key="+api_key+"&token="+api_token;
function main() {
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName).clear();
ss.appendRow(["Task", "CheckItems","Due", "List", "Tag", "Description", "Last Action Time", "Details"]);
var response = UrlFetchApp.fetch(url + "boards/" + board_id + "/lists?cards=all&" + key_and_token);
var lists = JSON.parse((response.getContentText()));
for (var i=0; i < lists.length; i++) {
var list = lists[i];
var response = UrlFetchApp.fetch(url + "list/" + list.id + "/cards?" + key_and_token);
var cards = JSON.parse(response.getContentText());
if(!cards) continue;
for (var j=0; j < cards.length; j++) {
var card = cards[j];
var response = UrlFetchApp.fetch(url + "cards/" + card.id + "/?actions=all&" + key_and_token);
var carddetails = JSON.parse(response.getContentText()).actions;
if(!carddetails) continue;
var dato = carddetails[0].date.toString();
if (card.due){
var due = card.due.toString().split("T")[0];
} else {
var due = ""
}
var name = card.name;
var link = card.url;
var listname = list.name;
var desc = card.desc;
if (card.labels[0]){
var labels = card.labels[0].name
for (var l=1; l<card.labels.length;l++){
labels = labels + ", " + card.labels[l].name
}
} else {
var labels = ""
}
Logger.log(url + "cards/" + card.id + "/checklists?" + key_and_token)
var response = UrlFetchApp.fetch(url + "cards/" + card.id + "/checklists?" + key_and_token);
var checkItems = JSON.parse(response.getContentText());
if(checkItems.length==1.0){
Logger.log(checkItems[0].name);
for (var m=0; m < checkItems[0].checkItems.length; m++){
var items = checkItems[0].checkItems[m].name
ss.appendRow([name, items, due, listname, labels, desc, dato, link]);
}
} else {
var items = ""
ss.appendRow([name, items, due, listname, labels, desc, dato, link]);
}
}
}
}
@mrchypark
Copy link
Author

태그는 이름이 있는 상태로 작성할 것.
체크리스트는 처음 것의 리스트만 가져옴.
Due 는 card 단위로 기록됨

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment