LoginSignup
5
7

More than 5 years have passed since last update.

TrelloAPIを利用して、GoogleカレンダーにTrelloの特定リストを同期する。

Last updated at Posted at 2016-02-17

GoogleカレンダーにTrelloの特定のリストを同期したい。

私個人はTrello上にToday,Week,Monthといったリストを作ってタスクの管理を行っています。
しかし、チームではGoogleカレンダー上へ外出予定以外に社内作業のタスクなども登録しており、手動同期は手間がかかる上、登録していないとタスクの共有が行えない状況でした。

Todayリストを常に本日の予定として登録する。

幸い、TrelloにはAPIが存在し、GoogleAppScript経由で比較的簡単に同期出来そうです。
APIの取得は http://qiita.com/AKB428/items/a4a9ff2893affb20f99c を参考に行いました。
GASを色々調べながらゴリゴリ書いてみました。

// TrelloのAPIKey
var trelloKey = 'hogefugahogehogefugahoge';
// Trello連携用トークンID
var trelloToken = 'hogefugahoge';
// 取得対象のリストID
var trelloTodayList = 'hogefuga';
// Trelloユーザー名
var userName = 'hogehoge';
// 連携先GoogleカレンダーID
var gcalId = 'hoge@group.calendar.google.com';
// 連携時に削除キーにするDescription
var delDescription = 'Added by Trello'

function Trello2Gcal() {
  // 当日日付
  var d = new Date();
  d.setHours(23);
  d.setMinutes(59);
  d.setSeconds(0);
  // 前日日付
  var yd = new Date();
  yd.setDate(d.getDate() - 1);
  yd.setHours(0);
  yd.setMinutes(0);
  yd.setSeconds(0);
  // 本日+前日のTrello予定を初期化
  deleteTrelloEvents(d);
  deleteTrelloEvents(yd);
  // Torelloから予定を取得
  var listurl = 'https://trello.com/1/lists/' + trelloTodayList + '/cards?key=' + trelloKey + '&token=' + trelloToken + '&fields=name';
  var todayTask = UrlFetchApp.fetch(listurl);
  var tasks = JSON.parse(todayTask.getContentText());
  for(var key in tasks){ 
    Logger.log(d + ":" + tasks[key].name + ":" + tasks[key].id ); 
    // Googleカレンダーへ投稿
    var gcal = CalendarApp.getCalendarById(gcalId);
    // Descriptionに削除用のキーを指定して登録
    gcal.createEvent(tasks[key].name + " From Trello", d, d,{description:delDescription})
  } 

}
// Trello登録されたイベントを削除する。
function deleteTrelloEvents(dt){
  Logger.log(dt);
  var gcal = CalendarApp.getCalendarById(gcalId);
  var events = gcal.getEventsForDay(dt);
  for(var i=0; i < events.length; i++){
    var dsc = events[i].getDescription();
    if(dsc==delDescription){
      events[i].deleteEvent()
    }
  }
}

あとはトリガーを15分~30分おきぐらいで走るようにしたらTrelloのリストが常に今日の予定として登録されるようになりました。

課題

  • 日付、時刻指定がある場合にその指定通りに登録する。
    • 現状は他の共有カレンダーを邪魔しないように23:59固定なので。
  • Trello上のコメント等をDescriptionにうまく共有する。
  • 週の予定をさらにうまいこと登録したい。
5
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
7