Google Apps ScriptでTrelloのリストにある担当カードの数を集計する


ステーショナリー
みなさん、こんにちは!うえはら(@tifoso_str)です。

今回のシリーズでは、Google Apps ScriptでTrelloのAPIを利用して、1ヶ月の執筆数をメンバーごとに集計することを目標にしています。

その中で、前回は、Trelloのボードに登録しているメンバー情報を取り出す方法を紹介しました。

Google Apps ScriptでTrelloのボードに登録しているメンバー情報を取り出す
Google Apps ScriptでTrelloのAPIを叩きます。カード情報から取り出した、メンバーIDと対比させるために、ボードに登録しているメンバーの、メンバーIDと氏名を取り出します。

前回と前々回でカード情報とメンバー情報を取得していますので、今回はこれらの情報を元にTrelloのリストにある担当カードの数を集計する方法をお伝えします。

前回の復習

まずはカード情報とメンバー情報がどのような形で返ってくるか復習します。

カード情報は下記のように1つのカードの担当者と期限が対となって、それが纏まった2次元配列の形をしています。

メンバー情報は下記のように、メンバーIDと氏名で別々の配列を合せて2次元配列にした形になっています。

これらの情報を元に、Trelloの特定のリストにあるカードの担当者を集計していきます。

メンバー毎に集計する方法

スクリプトの解説の前に集計する方法をお伝えします。

まず、集計用にメンバーIDをKEY、カウント(執筆)数を値としたオブジェクトを作成します。

カウンターオブジェクト

次に、カード情報配列に入っている、各カードのメンバーIDを取り出します。
各カードのメンバーID

取り出したメンバーIDを元に、集計用のオブジェクトのKEYを特定して、メンバーの執筆数を「+1」します。

オブジェクト+1

これをカードの数だけ繰り返すことで集計できます。

オブジェクト繰り返し

メンバーIDをKEYとするオブジェクトの作成

それでは、実際のスクリプトについて解説していきます。

まず、下記二つのオブジェクトを作成する部分です。

  • メンバー情報を元にメンバーIDをKEY、氏名を値としたオブジェクト
  • 集計用にメンバーIDをKEY、カウント(執筆)数を値としたオブジェクト

オブジェクトを作成するときは波括弧({})でくくります。

オブジェクトにプロパティを追加するときは下記のようになります。

オブジェクト名[KEY] = Value

16行目でKEY:メンバーID,Value:氏名のオブジェクトを追加し、17行目でKEY:メンバーID,Value:0のオブジェクトを追加しています。

カード情報とメンバー情報の配列を元に、集計用の配列を操作する

次は今回のメインとなるこの部分です。

オブジェクト繰り返し

スクリプトは下記のようになります。

メインの部分ですが、スクリプトはシンプルですね。

7行目でobjCounterの該当のKEY:メンバーIDをさがして、Valueを「+1」しています。

5~7行目は下記のようにまとめて書くこともできますので、さらにシンプルになりますね。

スプレッドシート転記用の配列作成

最後にスプレッドシートに一度で書き込む為の配列を作成します。

オブジェクトの全てのプロパティに対して、繰り返し処理するときはfor…in文を使用します。

for (変数 in オブジェクト) {
  //ループ内で実行する処理
}

ブログの執筆が無かった場合は記録しないようにするので、カウンター配列の値が「0」のときを除いています。

これで、「メンバーID、氏名、執筆数」の順でmonthAchieve配列に追加されました。

まとめ

今回のスクリプトをまとめると、下記のようになります。

今回は、Google Apps ScriptでTrelloのリストにある担当カードの数を集計する方法をお伝えしました。

これで、特定のリストにあるカードの担当者ごとの集計ができますが、期日に関係なく集計されています。

今回のシリーズでは、1ヶ月の執筆数を集計するので、次回は期限の条件を追加してスプレッドシートに転記する部分をお伝えします。

最後までありがとうございました!

連載目次:GASでTrelloのAPIを利用して、1ヶ月の執筆数をメンバーごとに集計

「いつも隣にITのお仕事」の執筆チームでは、タスク管理にTrelloを使用しています。 各記事をカードとして管理し、公開されたものは「公開済み」のリストへ移動させます。 本シリーズでは、「公開済み」のリストにあるカードを確認して、1ヶ月の執筆数をメンバー毎に集計します。
  1. Google Apps ScriptでTrelloの特定のリストにあるカードの一覧を取得する
  2. Google Apps ScriptでTrelloのカード情報一覧から必要な情報を取り出す
  3. Google Apps ScriptでTrelloのボードに登録しているメンバー情報を取り出す
  4. Google Apps ScriptでTrelloのリストにある担当カードの数を集計する
  5. Google Apps ScriptでTrelloのリストにある担当カードの数をスプレッドシートに追記する

  投稿者プロフィール

うえはら
独学でプログラムを勉強しているノンプログラマーです。
名前から連想されるように沖縄在住ですが、うちなんちゅ~ではありません。
パソコンにできることはパソコンにさせよう!をモットーに日々の業務に取り組んでいます。

コメント