
Box: フォルダ検索
この工程は、Box の指定フォルダ直下に特定の名前のフォルダがあるかどうか調べます。
Basic Configs
- 工程名
- メモ
Configs for this Auto Step
- conf_OAuth2
- C1: OAuth2 設定 *
- ParentFolderId
- C2: 検索するフォルダの親フォルダの ID (空白の場合ルートフォルダ直下を検索します)#{EL}
- FolderName
- C3: 検索するフォルダの名称 *#{EL}
- FolderIdItem
- C4: フォルダの ID を保存するデータ項目
- WebViewUrlItem
- C5: フォルダの URL を保存するデータ項目
Notes
- フォルダ ID は、URL に含まれています https:// {sub-domain}.app.box.com/folder/(Folder ID)
- Box のリフレッシュトークンには、期限があります
- 期限を超えないよう、定期的に利用する必要があります (Box: トークンおよびURLの有効期限)
Capture

See also
Script (click to open)
- 次のスクリプトが記述されている XML ファイルをダウンロードできます
- box-folder-search.xml (C) Questetra, Inc. (MIT License)
- Professional のワークフロー基盤では、ファイル内容を改変しオリジナルのアドオン自動工程として活用できます
function main(){
let parentFolderId = configs.get("ParentFolderId");
if (parentFolderId === "" ||parentFolderId === null) {
parentFolderId = "0";
}
const folderName = configs.get("FolderName");
if (folderName === "" ||folderName === null) {
throw new Error("Folder Name is blank");
}
//get C4&C5
const idData = configs.getObject( "FolderIdItem" );
const urlData = configs.getObject( "WebViewUrlItem" );
//If neither C4 nor C5 are set,throw error
if((idData === null || idData === "") && (urlData === null || urlData === "")){
throw new Error("Neither of Data Items to save result are set.");
}
const oauth2 = configs.getObject("conf_OAuth2");
const {folderId, folderUrl} = searchFolder(oauth2,parentFolderId,folderName);
//set ID to Data Item
if (idData !== null) {
engine.setData(idData,folderId);
}
//set URL to Data Item
if (urlData !== null) {
engine.setData(urlData, folderUrl);
}
}
//search folder on box
function searchFolder(oauth2,parentFolderId,folderName){
const url = `https://api.box.com/2.0/folders/${parentFolderId}/items`;
let marker = "";
const limit = httpClient.getRequestingLimit();
for(let count = 0; count < limit; count++) {
const response = httpClient.begin()
.authSetting(oauth2)
.queryParam("fields", "id,type,name")
.queryParam("limit", "1000")
.queryParam("usemarker","true")
.queryParam("marker",marker)
.get(url);
const status = response.getStatusCode();
const responseTxt = response.getResponseAsString();
engine.log(`status: ${status}`);
if (status >= 300) {
engine.log(responseTxt);
throw new Error("Failed to search");
}
const json = JSON.parse(responseTxt)
const items = json.entries;
for(let i = 0; i < items.length; i++){
if(items[i].type === "folder" && items[i].name === folderName){
const url = `https://app.box.com/folder/${items[i].id}`;
return {
folderId : items[i].id,
folderUrl : url
};
}
}
marker = json.next_marker;
if(marker === undefined || marker === '' || marker === null) {
throw new Error(`Folder ${folderName} doesn't exist.`);
}
}
throw new Error("Too many folders and files are in the specified folder");
}