Box: フォルダ共有リンク作成

Box: フォルダ共有リンク作成 (Box: Create Shared Link to Folder)
Box の指定フォルダのダウンロード URL を作成します
2019-08-23 (C) Questetra, Inc. (MIT License)
Configs
  • C1: OAuth2 設定名 *
  • C2: 共有するフォルダ ID * #{EL}
  • C3: リンクの有効期限が格納されている日時型データ項目
  • C4: リンクのパスワードが格納されている文字型データ項目
  • 5: 共有リンクを保存する文字型データ項目 *
Script
main();
function main(){
  const folderId = configs.get("FolderId");
  let timezone = engine.getTimeZoneId();
  if (timezone === "GMT"){
    timezone += "+00:00";
  }
  if (folderId === "" ||folderId === null) {
    throw "Folder ID is blank";
  }
  const dateItem = configs.get("unsharedAt");
  const passwordItem = configs.get("DownloadPass");
  let unsharedDate = null;
  if (dateItem !== "" && dateItem !== null){
    unsharedDate = engine.findDataByNumber(dateItem);
  }
  let password = "";
  if (passwordItem !== "" && passwordItem !== null){
    password = engine.findDataByNumber(passwordItem);
  }
  // get OAuth token
  let token;
  token = httpClient.getOAuth2Token(configs.get("OAuth2"));
  
  let jsonBody = {};

  jsonBody["shared_link"] = {"access": "open"};
  if(unsharedDate !== null){
    jsonBody["shared_link"]["unshared_at"] = unsharedDate.toString() + timezone.slice(3);
  }
  if(password !== "" && password !== null){
    jsonBody["shared_link"]["password"] = password;
  }
  
  jsonBody["shared_link"]["permissions"] = {"can_download": true };
  
  const url = "https://api.box.com/2.0/folders/" + folderId + "?fields=shared_link";
  const response = httpClient.begin()
    .bearer(token)
    .body(JSON.stringify(jsonBody), "application/json; charset=UTF-8")
    .put(url);
  const status = response.getStatusCode();
  const responseTxt = response.getResponseAsString();
  if (status >= 300) {
    const error = "Failed to create \n status:" + status + "\n" + responseTxt
    throw error;
  }
  engine.log("status:" + status);
  engine.log(responseTxt);
  
  
  const jsonRes = JSON.parse(responseTxt);

  const UrlData = configs.get("DownloadUrlItem");
  if (UrlData !== null || UrlData !== "") {
      engine.setDataByNumber(UrlData,jsonRes["shared_link"]["url"] );
  }
}

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人のブロガーが「いいね」をつけました。