Box: フォルダ作成

Box: フォルダ作成 (Box: Create Folder)
Box の指定フォルダ内に新しいフォルダを作成し、フォルダ ID / URL を保存します。すでに同名のフォルダがある場合は、そのフォルダ ID / URL を保存します。
2019-10-21 (C) Questetra, Inc. (MIT License)
Configs
  • C1: OAuth2 設定名 *
  • C2: 作成するフォルダの親フォルダの ID (空白の場合ルートフォルダに作成されます) #{EL}
  • C3: 作成するフォルダの名称 * #{EL}
  • C4: フォルダ ID を保存する文字型データ項目
  • C5: フォルダ URL を保存する文字型データ項目
Script
main();
function main(){
  let parentFolderId = configs.get("ParentFolderId");
  const folderName = configs.get("FolderName");
  const reg = new RegExp('[/\]');
  if (folderName == "" ||folderName == null) {
    throw "Folder Name is blank";
  }else if(folderName.length>255){
    throw"Folder Name shoule be less than 256 characters";
  }else if(folderName.search(reg) !== -1|| folderName.slice(-1) == " " || folderName == "." || folderName == ".."){
    throw "Invalid Folder Name";
  }
  // get OAuth token
  const token = httpClient.getOAuth2Token(configs.get("conf_OAuth2"));
  const json = createFolder(token, parentFolderId, folderName);
  const IdData = configs.get("FolderIdItem");
  const UrlData = configs.get("WebViewUrlItem");
  if (IdData !== null && IdData !== "") {
      engine.setDataByNumber(IdData, json["id"]);
  }
  if (UrlData !== null && UrlData !== "") {
      engine.setDataByNumber(UrlData, "https://app.box.com/folder/" + json["id"]);
  }
}
  //create folder on google drive
function createFolder(token, parentFolderId, name) {
  let jsonReq = {};
  //mime type of google drive folder
  if (parentFolderId !== "" && parentFolderId !== null){
    jsonReq["parent"] = {"id": parentFolderId + '' };
  }else{
    jsonReq["parent"]= {"id": 0 + '' }
  }
  jsonReq["name"] = name + '';
  
  const url = 'https://api.box.com/2.0/folders';
  const response = httpClient.begin()
    .bearer(token)
    .body(JSON.stringify(jsonReq), "application/json; charset=UTF-8")
    .post(url);
  const status = response.getStatusCode();
  const responseTxt = response.getResponseAsString();
  let jsonRes = JSON.parse(responseTxt);
  try{
    if (status === 409){
      if(jsonRes["context_info"]["conflicts"][0]["type"] === "folder"){
        jsonRes = jsonRes["context_info"]["conflicts"][0];
      }else{
        throw "";
      }
    }else if (status >= 300) {
      throw "";
    }
  }catch(e){
      const error = "Failed to create \n status:" + status + "\n" + responseTxt;
      throw error;
    }
  
  engine.log("status:" + status);
  engine.log(responseTxt);
  
  return jsonRes;
}

Download

Capture

Notes

  1. フォルダ ID は、URL に含まれています。 https://{sub-domain}.app.box.com/folder/(Folder ID)
  2. Box のリフレッシュトークンには、期限があります。期限を超えないよう、定期的に利用する必要があります。(2019 年 7 月時点で、60日。 https://box-content.readme.io/docs/oauth-20)
%d人のブロガーが「いいね」をつけました。