スプレッドシートからTrelloにカード追加する(任意の行だけ選択可能)


はじめに

スプレッドシートにガーッとタスクを書き出すことってよくありますよね?
そのあと各タスクの詳細をガガガっと書くわけです。
そしてTrelloで管理したくなってアーってなったのでスクリプトを書きました。
(カード作成だけならTrelloにコピペでいけるんですが、カードの中の詳細も転記したい)

使い方

選択した行をカードとして作成します。複数選択も可能です。
詳しくは動画を。

スクリプト

こちらをスプレッドシートのGAS(ツール→スクリプトエディタ)にコピペします。

// ユーザー名
// URLにも使用されている
var user_name = 'ここにユーザー名を記載する';

// APIキーとトークン
// https://trello.com/app-key
// 上記にアクセスしてKeyとTokenを取得する。※Tokenは『generate a Token.』から作成する。
var api_key = 'ここにAPIキーを記載する';
var api_token = 'ここにAPIキーを記載する';

// ボードID
// getBoardsを実行して取得する
var board_id = 'ここにボードIDを記載する';

// リストID
// getListsを実行して取得する
var list_id = 'ここにリストIDを記載する';

// カード名の列番号
var title_column_no = 1;
// カード詳細説明の列番号
var description_column_no = 2;

function getBoards() {
  var url = 'https://api.trello.com/1/members/' + user_name + '/boards?key=' + api_key + '&token=' + api_token + '&fields=name';
  Logger.log(UrlFetchApp.fetch(url, {'method':'get'}));
}

function getlists() {
  var url = "https://trello.com/1/boards/" + board_id + "/lists?key=" + api_key + "&token=" + api_token + "&fields=name";
  Logger.log(UrlFetchApp.fetch(url, {'method':'get'}));
}

function getLabels() {
  var url = "https://trello.com/1/boards/" + board_id + "/labels?key=" + api_key + "&token=" + api_token + "&fields=name";
  Logger.log(UrlFetchApp.fetch(url, {'method':'get'}));
}

function addTrelloCard() {

  // 選択しているセルの開始行番号を取得
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var upper_left_cell = sheet.getActiveCell();
  var start_row = upper_left_cell.getRow();

  // 選択しているセルの行数を取得
  var range = SpreadsheetApp.getActiveRange();
  var rows = range.getNumRows();

  // 確認ダイアログ
  var message = '';
  var start_card_title = sheet.getRange(start_row, title_column_no).getValue();
  message += start_card_title;
  if (rows > 1) {
    message += ' など' + rows + '';
  }
  var result = Browser.msgBox('カードを作成します。よろしいですか?', message, Browser.Buttons.OK_CANCEL);

  if (result == 'cancel') {
    return;
  }

  // カード作成
  for (var i = 0; i < rows; i++) {
    var row = start_row + i;
    var card_title = sheet.getRange(row, title_column_no).getValue();
    var card_description = sheet.getRange(row, description_column_no).getValue();

    var url = 'https://api.trello.com/1/cards/?key=' + api_key + '&token=' + api_token;
    var options = {
      'method' : 'post',
      'muteHttpExceptions' : true,
      'payload' : {
        'name'      : card_title,
        'desc'      : card_description,
        'due'       : '',
        'idList'    : list_id,
        // 'idLabels'  : 'ラベルを使用したい場合はgetLabelsを実行してよしなに',
        'urlSource' : ''
      }
    }
    var response = UrlFetchApp.fetch(url, options);
    // 作成したカードのURLをセルに出力したい場合は下記コメントアウトはずしてよしなに。
    // var response_data = JSON.parse(response.getContentText());
    // sheet.getRange(row, 3).setValue(response_data['shortUrl']);
  }
}

function onOpen() {
  // メニューバーにカスタムメニューを追加
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var entries = [
    {name : "addTrelloCard"  , functionName : "addTrelloCard"},
  ];
  spreadsheet.addMenu("GAS", entries);
}

準備

使用するには多少準備が必要で、各値を定義する必要があります。
下記に従って記載してください。

ユーザー名

あなたのTrelloアカウントです。
Trelloのプロフィールページから確認してuser_nameに記載してください。

APIキーとトークン

TrelloAPIを使用するためキーとトークンが必要です。

https://trello.com/app-key
上記にアクセスしてKeyとTokenを取得します。
※Tokenは『generate a Token.』から作成。

api_keyとapi_tokenに記載してください。

ボードID

カードを追加するTrelloボードのIDを取得します。

getBoardsを実行してboard_idに記載します。

※初回は認証の警告が出るので許可すること

関数を選択でgetBoardsを選択して実行(再生ボタンをクリック)したあと、ログを確認する(表示→ログ)

ボードの一覧がjsonで表示されるので利用したいボードのidをコピペしましょう。

リストID

カードを追加するリストのIDが必要です。

getListsを実行してlist_idに記載します。

getBoardsと同様にgetListsを実行したあと、ログを確認する

リストの一覧がjsonで表示されるので利用したいリストのidをコピペしましょう。

これで準備は完了!使えるようになっているかと。

さいごに

列番号を定義しているのでセルの位置変更も可能です。
メンバーやラベルを追加しても便利でしょう。よしなにカスタマイズしてください。

それではステキなスプレッドシート&Trelloライフを。

追記

逆も書きました!
https://qiita.com/naoqoo2/items/87dad19771b370877f06