Box: Delete Shared Link of Folder

Box: フォルダ共有リンク削除

This item deletes a Shared Link URL of the specified folder on Box. An error will occur if no shared link.

Auto Step icon
Basic Configs
Step Name
Note
Configs for this Auto Step
OAuth2
C1: OAuth2 Setting *
conf_FolderId
C2: Folder ID to delete Shared Link *

Notes

  • The folder ID is contained in the URL: https://{sub-domain}.app.box.com/folder/(Folder ID)
  • Box refresh tokens have an expiration date. Use it regularly to ensure that it does not exceed the expiration. (Box: Token & URL Expiration)
  • If there is no shared link it will result in an error

Capture

See also

Script (click to open)
  • An XML file that contains the code below is available to download
    • box-folder-link-delete.xml (C) Questetra, Inc. (MIT License)
    • If you are using Professional, you can modify the contents of this file and use it as your own add-on auto step

main();

function main() {

    const oauth2 = configs.get("OAuth2");

    let folderId = decideFolderId();

    // フォルダに共有リンクがあるか調べる
    const existingUrl = getFolderInformation(oauth2, folderId);

    // フォルダに共有リンクが無い場合はエラーにする 共有リンクがある場合は削除する
    if (existingUrl === null) {
        const error = `Failed to Delete Shared Link. The folder(ID:${folderId}) doesn't have a Shared link.`;
        throw error;
    }
    deleteSharedLink(oauth2, folderId);
}

/**
 * フォルダのIDをconfigから読み出して出力する。
 * @return {String} folderId フォルダの ID
 */
function decideFolderId() {
    let folderId = "";
    const folderIdDef = configs.getObject("conf_FolderId");
    if (folderIdDef === null) {
        folderId = configs.get("conf_FolderId");
    } else {
        folderId = engine.findData(folderIdDef);
    }

    if (folderId === "" || folderId === null) {
        throw "Folder ID is blank";
    }
    if (folderId === "0") {
        throw "Root folder is not eligible.";
    }
    return folderId;
}


/**
 * Get Folder Information on Box  フォルダに共有リンクがあるか調べる
 * @param {String} oauth2 認証設定
 * @param {String} folderId  調べたいフォルダのID
 * @return {Object}  jsonRes.shared_link フォルダの共有リンクオブジェクト
 */
function getFolderInformation(oauth2, folderId) {
    // レスポンスを簡易版にするため、fields 属性を指定
    const url = "https://api.box.com/2.0/folders/" + folderId + "?fields=shared_link";
    const response = httpClient.begin()
        .authSetting(oauth2)
        .get(url);
    const status = response.getStatusCode();
    const responseTxt = response.getResponseAsString();
    if (status !== 200) {
        const error = `Failed to get folder information. status: ${status}`;
        engine.log(responseTxt);
        throw error;
    }

    const jsonRes = JSON.parse(responseTxt);

    return jsonRes.shared_link;
}


/**
 * Delete Shared Link to Folder on Box  共有リンク削除
 * @param {String} OAuth2 認証設定
 * @param {String} folderId  共有リンクを削除したいフォルダのID
 */
function deleteSharedLink(oauth2, folderId) {

    let jsonBody = {};

    jsonBody["shared_link"] = null;

    // レスポンスを簡易版にするため、fields 属性を指定
    const url = "https://api.box.com/2.0/folders/" + folderId + "?fields=shared_link";
    const response = httpClient.begin()
        .authSetting(oauth2)
        .body(JSON.stringify(jsonBody), "application/json; charset=UTF-8")
        .put(url);
    const status = response.getStatusCode();
    const responseTxt = response.getResponseAsString();
    if (status !== 200) {
        const error = `Failed to delete. status: ${status}`;
        engine.log(responseTxt);
        throw error;
    }
    engine.log(`status: ${status} Shared Link was deleted, forder ID: ${folderId}`);
}
%d