Last active
May 25, 2018 09:28
-
-
Save mrchypark/2eebf83edd1a65a19de92779bca2a9a6 to your computer and use it in GitHub Desktop.
트렐로 카드를 구글 sheet에 현황을 업데이트 해주는 gs
This file contains hidden or 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 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]); | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
태그는 이름이 있는 상태로 작성할 것.
체크리스트는 처음 것의 리스트만 가져옴.
Due 는 card 단위로 기록됨