Trello: メンバ ID 取得

Trello: メンバ ID 取得

Trello: Get Member ID

この工程は、Trello のメンバ ID を取得します。

Basic Configs
工程名
メモ
Auto Step icon
Configs for this Auto Step
conf_ApiKey
C1: API キーを設定した認証設定 *
conf_ApiToken
C2: API トークンを設定した認証設定 *
conf_BoardId
C3: ボード ID *
conf_Names
C4: メンバの名前(フルネームもしくはユーザネーム 複数設定する場合、1件ごとに改行してください) *
conf_MemberId
C5: メンバ ID を保存するデータ項目 *

Notes

  • API キー、API トークンを取得するには、
    1. Power-Up の管理ページを開き、新しい Power-Up を作成してください
    2. 左メニューの「API キー」を開くと、API キーが表示されます
    3. API キーの右側の「手動でトークンを生成できます」のリンクから、トークンを取得してください
  • ボード ID は、次の手順で取得できます
    1. ブラウザで Trello のボードを表示します
    2. アドレスバーの URL の末尾に .json を追加すると、ボード情報の JSON が 表示されます
    3. 表示された JSON 内の「id」の値がボード ID です

Capture

See Also

Script (click to open)
  • 次のスクリプトが記述されている XML ファイルをダウンロードできます
    • trello-memberid-get.xml (C) Questetra, Inc. (MIT License)
    • Professional のワークフロー基盤では、ファイル内容を改変しオリジナルのアドオン自動工程として活用できます


function main() {
    //// == 工程コンフィグ・ワークフローデータの参照 / Config & Data Retrieving ==
    const authKey = configs.getObject("conf_ApiKey");
    const authToken = configs.getObject("conf_ApiToken");
    const boardId = configs.get('conf_BoardId');//固定値指定のみ 必須
    const memberNamesArray = decideMemberNames();
    const memberIdDef = configs.getObject('conf_MemberId');

    const apiKey = authKey.getToken();
    const apiToken = authToken.getToken();

    //// == Calculating / 演算 ==
    const membersArray = getMembers(apiKey, apiToken, boardId);

    // 与えられた関数を配列のすべての要素に対して呼び出し、その結果からなる新しい配列を生成
    const memberIdsArray = memberNamesArray.map(
        memberName => getMemberId(membersArray, memberName)
    );

    engine.setData(memberIdDef, memberIdsArray.join("\n"));
}


/**
  * config から設定値を読み出す
  * 設定値に空行が含まれている場合はエラー
  * 末尾が改行 1 行で終わる場合だけ、それを除去して処理する
  * @return {Array} memberNamesArray メンバ名の配列
  */
function decideMemberNames() {
    let memberNames = configs.get('conf_Names');//固定値指定のみ 必須

    // まず、末尾に改行がある場合、1 行削除する	
    if (memberNames.endsWith('\n')) {
        memberNames = memberNames.slice(0, -1);
    }
 
    const memberNamesArray = memberNames.split("\n");

    // 残っている配列に空文字が含まれる場合はエラーにする
    if (memberNamesArray.some(line => line === '')) {
        throw "Empty lines are not allowed.";
    } 
    return memberNamesArray;
}


/**
  * ボード内のメンバ情報を取得する
  * @param {String} auth.apiKey
  * @param {String} auth.apiToken
  * @param {String} boardId
  * @return {Array} membersArray
  */
function getMembers(apiKey, apiToken, boardId) {

    const url = `https://api.trello.com/1/boards/${encodeURIComponent(boardId)}/members`;
    const response = httpClient.begin()
        .queryParam("key", `${apiKey}`)
        .queryParam("token", `${apiToken}`)
        .get(url);
    const status = response.getStatusCode();
    const responseStr = response.getResponseAsString();
    if (status !== 200) {
        engine.log(responseStr);
        throw `Failed to get member information. status: ${status}`;
    }
    return JSON.parse(responseStr);
}


/**
  * メンバ情報からメンバ名に対応するメンバ ID を取得する
  * 最初にユーザ名またはフルネームが、設定したメンバ名に一致した、メンバの ID を取得する
  * @param {Object} membersArray  メンバ情報の JSON 配列
  * @param {String} memberName  メンバ名
  * @return {String} memberObj.id  メンバ ID
  */
function getMemberId(membersArray, memberName) {

    const memberObj = membersArray.find(memberElement => memberElement.fullName === memberName || memberElement.username === memberName);
    if (memberObj !== undefined) {
        return memberObj.id;
    } else {
        throw `Member name: "${memberName}" not found in the Board`;
    }
}
    
上部へスクロール

Questetra Supportをもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む