#やったこと
プロジェクト管理をtrelloで行い、振り返りを行うこともあるワニね。
trello上で見るのも良いですが、データをスプレッドシートですべてを見たい・・ということもあるでしょうワニ。そんな時の為にGASで作ってみたワニ🐊
#ひとまず版とした所以
・jsonデータの要素をそのままスプレッドシートに履いているので、生データ過ぎる要素がある。
・アーカイブされているものは現在取れません。。なのでタスク終了=アーカイブとしているボードではあまり有効ではないです。
#GAS作成の上で必要なもの
・trelloのAPIキー
https://trello.com/app-key
・trelloのトークン
https://trello.com/app-key
ページ内の"あなたは手動でTokenを作られます"のToken部分のリンクをクリック→認証
・カード一覧を取得したいboardID
boardIDは実際にボードを開いたアドレスの以下XXXXXXの部分になります。
https://trello.com/b/XXXXXX/YYYYYY
・出力するGoogleスプレッドシートのID
スプレッドシートのIDは、実際にスプレッドシートを開いたアドレスの以下ZZZZZZの部分になります。
https://docs.google.com/spreadsheets/d/ZZZZZZ/edit#gid=0
・出力するGoogleスプレッドシートのシート名
用意するものが多そうに見えますが、1分以内で集められます。スプレッドシートは新規作成したものでOK。
#ソースコード
これがコードワニ🐊
function myFunction() {
var trelloKey = "trelloのAPIキー";
var trelloToken = "trelloのトークン";
var trelloBoard = "trelloのボードID";
var sheetId = "スプレッドシートのID";
var sheetName = "スプレッドシート名";
var cardItem = ['id',
'badges',
'checkItemStates',
'closed',
'dateLastActivity',
'desc',
'descData',
'due',
'dueComplete',
'email',
'idAttachmentCover',
'idBoard',
'idChecklists',
'idLabels',
'idList',
'idMembers',
'idMembersVoted',
'idShort',
'labels',
'manualCoverAttachment',
'name',
'pos',
'shorLink',
'shortUrl',
'subscribed',
'url'
];
// カード情報をjson形式で取得
var cardUrl = "https://trello.com/1/boards/"+trelloBoard+"/cards?key="+trelloKey+"&token="+trelloToken+"&fields=id,badges,checkItemStates,closed,dataLastActivity,desc,descData,due,dueComplete,email,idAttachmentCover,idBoard,idChecklists,idLabels,idList,idMembers,idMembersVoted,idShort,labels,manualCoverAttachment,name,pos,shortLink,shortUrl,subscribed,url";
var cardRes = UrlFetchApp.fetch(cardUrl, {'method':'get'});
var cardJson = JSON.parse(cardRes.getContentText());
// シート情報を取得
var spreadSheet = SpreadsheetApp.openById(sheetId);
var sheet = spreadSheet.getSheetByName(sheetName);
spreadSheet.duplicateActiveSheet();
// 見出し出力
for(var i = 0; i < cardItem.length; i++)
{
sheet.getRange(1,2+i).setValue(cardItem[i]);
}
// カード情報取得
for(var i = 0; i < cardJson.length; i++)
{
var writeRow = 2;
sheet.getRange(2+i,1).setValue((i+1));
for(var j = 0; j < cardItem.length; j++)
{
var getElement = cardJson[i][cardItem[j]];
sheet.getRange(2+i,writeRow).setValue(getElement);
writeRow++;
}
}
}
*IDは伏せていますワニ。
*それ以外の情報もちゃんと取れているワニ。I列以降。
#所感
・カード総数の調べ方がわからず、頓挫しそうになりましたが、json.lengthであっさり解決してしまったワニ🐊
・2018/6/23現在のカード情報になりますワニ。developerページを参照しましたワニ🐊
https://developers.trello.com/reference/#card-object