Trello: ラベル ID 取得

Trello: ラベル ID 取得

Trello: Get Label 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_LabelNames
C4: ラベルの名前 (複数設定する場合、1件ごとに改行してください) *
conf_LabelId
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 です
  • 最初に名前が一致したラベルの ID を取得します
  • ボード内で、名前が設定されていないラベルの ID は取得できません

Capture

See Also

Script (click to open)
  • 次のスクリプトが記述されている XML ファイルをダウンロードできます
    • trello-labelid-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 labelNamesArray = decideLabelNames();
    const labelIdDef = configs.getObject('conf_LabelId');

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

    //// == Calculating / 演算 ==
    const labelsArray = getLabels(apiKey, apiToken, boardId);

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

    engine.setData(labelIdDef, labelIdsArray.join("\n"));
}


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

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

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


/**
  * ボード内のラベル情報を取得する
  * @param {String} auth.apiKey
  * @param {String} auth.apiToken
  * @param {String} boardId
  * @return {Array} labelsArray
  */
function getLabels(apiKey, apiToken, boardId) {

    const url = `https://api.trello.com/1/boards/${encodeURIComponent(boardId)}/labels`;
    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 label information. status: ${status}`;
    }
    return JSON.parse(responseStr);
}


/**
  * ラベル情報からラベル名に対応するラベル ID を取得する
  * ラベル名が複数ある場合、最初に名前が一致したラベルの ID を取得する
  * @param {Object} labelsArray  ラベル情報の JSON 配列
  * @param {String} labelName  ラベル名
  * @return {String} labelObj.id  ラベル ID
  */
function getLabelId(labelsArray, labelName) {

    let labelObj = labelsArray.find(labelElement => labelElement.name === labelName);
    if (labelObj !== undefined) {
        return labelObj.id;
    } else {
        throw `Label name: "${labelName}" not found in the Board`;
    }
}
    
上部へスクロール

Questetra Supportをもっと見る

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

続きを読む