Trello: カードを移動

Trello: カードを移動

Trello: Move Card

この工程は、Trello のカードを指定したリストに移動します。

Basic Configs
工程名
メモ
Auto Step icon
Configs for this Auto Step
conf_ApiKey
C1: API キーを設定した認証設定 *
conf_ApiToken
C2: API トークンを設定した認証設定 *
conf_CardIds
C3: カード ID(1 行に 1 つ) *
conf_ListId
C4: カードを移動するリストの ID *

Notes

  • API キー、API トークンを取得するには、
    1. Power-Up の管理ページを開き、新しい Power-Up を作成してください
    2. 左メニューの「API キー」を開くと、API キーが表示されます
    3. API キーの右側の「手動でトークンを生成できます」のリンクから、トークンを取得してください

Capture

See Also

Script (click to open)

  • 次のスクリプトが記述されている XML ファイルをダウンロードできます

    • trello-card-move.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 apiKey = authKey.getToken();
    const apiToken = authToken.getToken();

    const cardIdsArray = retrieveCardIds();
    const listId = retrieveListId();

    //// == Calculating / 演算 ==
    const numOfLines = cardIdsArray.length;
    for (let i = 0; i < numOfLines; i++) {
        checkCard(apiKey, apiToken, cardIdsArray[i]);
        moveCard(apiKey, apiToken, cardIdsArray[i], listId);
    }
}

/**
  * config からカード ID を読み出す
  * @return {String} cardIds
  * @return {Array<String>} linesArray  カード ID の配列
  */
function retrieveCardIds() {
    const cardIdsDef = configs.getObject('conf_CardIds');
    const cardIds = engine.findData(cardIdsDef);

    if (cardIds === null || cardIds === "") {
        throw new Error("Card IDs aren't set.");
    }

    let linesArray = cardIds.split("\n");
    linesArray = linesArray.filter(lines => lines !== ""); // 空文字列を削除
    if (linesArray.length === 0) {
        throw new Error("Card IDs aren't set.");
    }

    const numOfLines = linesArray.length;
    if (numOfLines * 2  > httpClient.getRequestingLimit()) {
        throw new Error("Number of Card IDs is over the limit.");
    }
    return linesArray;
}

/**
  * config からリスト ID を読み出す
  * @return {String} listId
  */
function retrieveListId() {
    const listIdDef = configs.getObject('conf_ListId');
    if (listIdDef === null) { // 固定値で指定
        return configs.get('conf_ListId');
    }
    // 文字型データ項目の場合
    if (listIdDef.matchDataType('STRING_TEXTFIELD')) {
        const listId = engine.findData(listIdDef);
        if (listId === null) {
            throw new Error('List ID is blank.');
        }
        return listId;
    }
    // 選択型データ項目の場合
    const selects = engine.findData(listIdDef);
    if (selects === null || selects.size() === 0) {
        throw new Error('List ID is not selected.');
    }
    return selects.get(0).getValue();
}

/**
  * カードの状態を確認する
  * アーカイブ済のカードであればエラー
  * @param {String} auth.apiKey
  * @param {String} auth.apiToken
  * @param {String} cardId
  */
function checkCard(apiKey, apiToken, cardId) {

    const url = `https://api.trello.com/1/cards/${encodeURIComponent(cardId)}`;
    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 new Error(`Failed to get card information. Card ID: ${cardId}, status: ${status}`);
    }
    const jsonRes = JSON.parse(responseStr);
    if (jsonRes.closed === true) {
        throw new Error(`Card ID: ${jsonRes.id} is archived.`);
    }
}

/**
  * カードを移動する
  * @param {String} auth.apiKey
  * @param {String} auth.apiToken
  * @param {String} cardId
  * @param {String} listId
  */
function moveCard(apiKey, apiToken, cardId, listId) {

    const url = `https://api.trello.com/1/cards/${encodeURIComponent(cardId)}`;
    const response = httpClient.begin()
        .queryParam("key", `${apiKey}`)
        .queryParam("token", `${apiToken}`)
        .queryParam("idList", `${listId}`)
        .put(url);
    const status = response.getStatusCode();
    const responseStr = response.getResponseAsString();
    if (status !== 200) {
        engine.log(responseStr);
        throw new Error(`Failed to move. Card ID: ${cardId}, status: ${status}`);
    } else {
        engine.log(`Succeeded to move. Card ID: ${cardId}`);
    }
}

    

上部へスクロール

Questetra Supportをもっと見る

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

続きを読む