
Trello: ラベル ID 取得
この工程は、Trello のラベル ID を取得します。
Basic Configs
- 工程名
- メモ
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 トークンを取得するには、
- Power-Up の管理ページを開き、新しい Power-Up を作成してください
- 左メニューの「API キー」を開くと、API キーが表示されます
- API キーの右側の「手動でトークンを生成できます」のリンクから、トークンを取得してください
- ボード ID は、次の手順で取得できます
- ブラウザで Trello のボードを表示します
- アドレスバーの URL の末尾に .json を追加すると、ボード情報の JSON が 表示されます
- 表示された 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`;
}
}