Created
April 8, 2020 06:14
-
-
Save kenfdev/528f3ca8358b0a7ff80e542631ab81b0 to your computer and use it in GitHub Desktop.
Trello List to Slack
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
// --------------EDIT REQUIRED START--------------------- | |
// Trello | |
var TRELLO_USERNAME = "<USERNAME>";// enter your trello username | |
var TRELLO_KEY = "<TRELLO KEY>";// enter your trello key | |
var TRELLO_TOKEN = "<TRELLO TOKEN>";// enter your trello token | |
var TRELLO_BOARD_NAME = "<TRELLO BOARD NAME>"; // enter your trello board name | |
var TRELLO_LIST_NAME = "<TRELLO LIST NAME>"; // enter your trello list name | |
// Slack | |
var SLACK_WEBHOOK_URL = '<SLACK WEBHOOK URL>'; // enter your slack webhook url | |
// --------------EDIT REQUIRED END--------------------- | |
var TRELLO_CREDENTIALS = "key=" + TRELLO_KEY + "&token=" + TRELLO_TOKEN; | |
function main() { | |
var cards = findTrelloCardsFromList(TRELLO_BOARD_NAME, TRELLO_LIST_NAME); | |
if (cards.length === 0) { | |
// don't notify if cards are empty | |
return; | |
} | |
notifySlack(cards); | |
} | |
function findTrelloCardsFromList(boardName, listName) { | |
var boardId = findTrelloBoardId(boardName); | |
var listId = findTrelloListId(boardId, listName); | |
var url = "https://trello.com/1/lists/" + listId + "/cards?&fields=name,shortUrl&" + TRELLO_CREDENTIALS; | |
var res = UrlFetchApp.fetch(url, {'method':'get'}); | |
var cards = JSON.parse(res); | |
return cards; | |
///////////// function implementations | |
function findTrelloBoardId(name) { | |
var url = "https://trello.com/1/members/" + TRELLO_USERNAME + "/boards?fields=name&" + TRELLO_CREDENTIALS; | |
var res = UrlFetchApp.fetch(url, {'method':'get'}); | |
var boards = JSON.parse(res); | |
for (var board of boards) { | |
if (board.name === name) { | |
return board.id; | |
} | |
} | |
throw new Error("board not found: " + name); | |
} | |
function findTrelloListId(boardId, listName) { | |
var url = "https://trello.com/1/boards/" + boardId + "/lists?fields=name&" + TRELLO_CREDENTIALS; | |
var res = UrlFetchApp.fetch(url, {'method':'get'}); | |
var lists = JSON.parse(res); | |
for (var list of lists) { | |
if (list.name === listName) { | |
return list.id; | |
} | |
} | |
throw new Error("list not found: " + listName); | |
} | |
} | |
function notifySlack(cards) { | |
var item = []; | |
for (var card of cards) { | |
item.push("- <" + card.shortUrl + "|" + card.name + ">"); | |
} | |
var text = item.join("\n"); | |
// FYI: Message formatting | |
// https://api.slack.com/messaging/webhooks#advanced_message_formatting | |
var jsonData = { | |
blocks: [ | |
{ | |
type: "section", | |
text: { | |
type: "mrkdwn", | |
text: "*本日の残タスク*" | |
} | |
}, | |
{ | |
type: "section", | |
text: { | |
type: "mrkdwn", | |
text: text | |
} | |
} | |
] | |
}; | |
var payload = JSON.stringify(jsonData); | |
var options = | |
{ | |
"method" : "post", | |
"contentType" : "application/json", | |
"payload" : payload | |
}; | |
UrlFetchApp.fetch(SLACK_WEBHOOK_URL, options); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment