【GAS】Trelloのリスト内にあるカードを自動でアーカイブする方法

2019年1月15日
Google Apps Script

Trelloの「完了」リストにあるカードを手動でアーカイブするのが面倒になったため、Google Apps Scriptを利用して自動化した。

手順

Trelloの各情報を取得する

GASでTrelloを操作するために必要となる「APIキー」・「トークン」・「リストID」を取得する。

APIキー

下記のページから取得する。

トークン

下記のURLをブラウザで開く。( ※ <APIキー>は置き換える )

https://trello.com/1/authorize?key=<APIキー>&name=&expiration=never&response_type=token&scope=read,write

すると「アプリの利用を許可するページ」が表示されるので、許可する。

その後、表示されたページからトークンを取得する。

リストID

まず、下記のURLをブラウザで開き、表示されたページから対象となる「ボードID」を取得する。( ※ <APIキー><トークン>は置き換える )

https://trello.com/1/members/me/boards?key=<APIキー>&token=<トークン>

次に下記のURLをブラウザで開く。( ※ <ボードID><APIキー><トークン>は置き換える )

https://trello.com/1/boards/<ボードID>/lists?key=<APIキー>&token=<トークン>&fields=name

後は表示されたページから対象の「リストID」を取得する。

GASでプロジェクトを作成する

スクリプトプロパティにTrelloの各情報を設定する

スクリプトプロパティにTrelloの各情報を設定する。( ここではプロパティ名をAPI_KEYTOKENLIST_IDとする )

Trelloの情報を設定

リスト内のカードをアーカイブする関数を定義する

下記の関数を定義する。

function archiveCardsInList() {
  const PROPERTIES = PropertiesService.getScriptProperties().getProperties();
  const DATAS      = getCardDatasInList( 
    PROPERTIES.API_KEY, 
    PROPERTIES.TOKEN, 
    PROPERTIES.LIST_ID 
  );
  
  archiveCardsByDatas( DATAS, PROPERTIES.API_KEY, PROPERTIES.TOKEN );
}

function getCardDatasInList( apiKey, token, listId ) {
  const URL        = 
      'https://api.trello.com/1/lists/' + listId + '/cards'
    + '?key=' + apiKey
    + '&token=' + token
    + '&fields=id,name,dateLastActivity,shortUrl,desc'
  ;
  
  const RESPONSE = UrlFetchApp.fetch( URL );  
  const DATAS    = JSON.parse( RESPONSE.getContentText( 'UTF-8' ) );
    
  return DATAS;
}

function archiveCardsByDatas( datas, apiKey, token ) {
  datas.forEach( function( data ) {
    const ID      = data["id"];
    const URL     = 'https://api.trello.com/1/cards/' + ID;
    const PAYLOAD = { 'key': apiKey, 'token': token, 'closed': 'true', };
    const OPTIONS = { 'method': 'put', 'payload': PAYLOAD, };
    
    UrlFetchApp.fetch( URL, OPTIONS );
  } );
}

トリガーを設定する

archiveCardsInList関数を定期的に呼び出すようにトリガーを設定する。

リスト内のカードをアーカイブする関数のトリガーを設定

これでTrelloのリスト内にあるカードが自動でアーカイブされる。

参考