# folder（フォルダー）

```javascript
// Eagle アプリで現在選択されているフォルダを取得
let folder = (await eagle.folder.getSelected())[0];

// 属性を変更
folder.name = '新しいフォルダ名';
folder.description = '新しい説明...';

// 変更を保存
await folder.save();
```

{% hint style="success" %}
**🦄 ベストプラクティス：** データの安全性を確保するために、API が提供する `save()` メソッドを使用してデータの読み書きや変更を行い、Eagle リソースライブラリの下の `metadata.json` や任意のファイルを直接変更しないようにしてください。
{% endhint %}

## メソッド <a href="#z1a5y" id="z1a5y"></a>

## create(options) <a href="#xnzds" id="xnzds"></a>

フォルダを作成します。

* `options` Object
  * `name` string - フォルダ名
  * `description` string (任意) - フォルダの説明
  * `parent` string (任意) - 親フォルダの ID。このパラメーター付きだと `createSubfolder(parentId, options)` と同じです。
* 戻り値 `Promise<folder: Folder>` - 成功した `folder` を返します。

```javascript
let newFolder = await eagle.folder.create({
    name: '新しいフォルダ',
    description: 'フォルダの説明。',
});
```

***

## createSubfolder(parentId, options) <a href="#rys4i" id="rys4i"></a>

サブフォルダを作成します。

* `parentId` string - 親フォルダの ID
* `options` Object
  * `name` string - フォルダ名
  * `description` string (任意) - フォルダの説明
* 戻り値 `Promise<folder: Folder>` - 成功した `folder` を返します。

```javascript
let parentFolder = await eagle.folder.getById('folder_id');
let subFolder = await eagle.folder.createSubfolder(parentFolder.id, {
    name: 'サブフォルダ',
    description: 'サブフォルダの説明。',
});
```

***

## get(options) <a href="#x9nu2" id="x9nu2"></a>

指定条件のフォルダを取得。

* `options` Object - 検索条件
  * `id` string (任意) - フォルダの id
  * `ids` string\[] (任意) - フォルダ id の配列
  * `isSelected` boolean (任意) - 現在選択されているフォルダ
  * `isRecent` boolean (任意) - 最近利用したフォルダ
* 戻り値 `Promise<folders: Folder[]>` - 検索結果の `folders`

```javascript
// 指定された id のフォルダを取得
let folders = await eagle.folder.get({
    ids: ['folder_id1', 'folder_id2']
});

// 現在のアプリで選択されているフォルダを取得
let folders = await eagle.folder.get({
    isSelected: true
});
```

***

## getAll() <a href="#fbdzh" id="fbdzh"></a>

すべてのフォルダを取得します。

* 戻り値 `Promise<folders: Folder[]>` - `folders` を返します。

```javascript
let folders = await eagle.folder.getAll();
```

***

## getById(folderId) <a href="#sy5fz" id="sy5fz"></a>

対応する `folderId` のフォルダーを取得します。

* `folderId` string - フォルダの id
* 返り値 `Promise<folder: Folder>` - `folder` の検索結果

```javascript
let folder = await eagle.folder.getById('folder_id');
```

***

## getByIds(folderIds) <a href="#n0gjq" id="n0gjq"></a>

対応する `folderIds` のフォルダーアレイを取得します。

* `folderIds` string\[] - フォルダー id のアレイ
* 返り値 `Promise<folders: Folder[]>` - `folders` の検索結果

```javascript
let folders = await eagle.folder.getByIds(['folder_id1', 'folder_id2']);
```

***

## getSelected() <a href="#dsbgj" id="dsbgj"></a>

現在のアプリケーションで選択されているフォルダーを取得します。

* 返り値 `Promise<folders: Folder[]>` - `folders`

```javascript
let folders = await eagle.folder.getSelected();
```

***

## getRecents() <a href="#dwsxw" id="dwsxw"></a>

最近使用されたフォルダーを取得します。

* 返り値 `Promise<folders: Folder[]>` - `folders`

```javascript
let folders = await eagle.folder.getRecents();
```

***

## open(folderId) <a href="#gjdst" id="gjdst"></a>

Eagle は対応する `folderId` のフォルダーを開きます。

* 返り値 `Promise<void>`

```javascript
await eagle.folder.open('folder_id');

// 以下と同等
let folder = await eagle.folder.getById('folder_id');
await folder.open();
```

{% hint style="info" %}
ヒント：フォルダーを開くために、フォルダーのインスタンスの `open()` メソッドを直接呼び出すこともできます。
{% endhint %}

***

## クラス：Folder <a href="#uezi0" id="uezi0"></a>

Folder API `get` から返される Object タイプで、変更および保存機能を提供します。

```javascript
let folder = await eagle.folder.getById('folder_id');

console.log(folder.id);
console.log(folder.name);

folder.name = 'new name';
console.log(folder.name);

await folder.save();
```

{% hint style="success" %}
**🦄 ベストプラクティス：** データの安全性を確保するために、Folder インスタンスが提供する `save()` メソッドを使用してデータの取得および変更を行い、Eagle のリソースリポジトリの下の `metadata.json` または任意のファイルを直接変更しないでください。
{% endhint %}

***

#### インスタンスメソッド <a href="#sihmc" id="sihmc"></a>

### **save()**

すべての変更を保存します。

* 返り値 `Promise<void>`

```javascript
let folder = await eagle.folder.getById('folder_id');
folder.name = 'New Fodler Name';

// 変更を保存
await folder.save();
```

***

### **open()**

Eagle はこのフォルダーを開きます。

* 返り値 `Promise<void>`

```javascript
let folder = await eagle.folder.getById('folder_id');
await folder.open();

// これと等価
await eagle.folder.open('folder_id');
```

{% hint style="info" %}
ヒント：フォルダを開くために、`eagle.folder.open(folderId)` メソッドを直接呼び出すこともできます。
{% endhint %}

***

#### インスタンス属性 <a href="#woenk" id="woenk"></a>

`Folder` インスタンスには以下の属性が含まれます：

### **`id` string**

読み取り専用、フォルダー id。

### **`name` string**

フォルダー名。

### **`description` string**

フォルダーの説明、紹介。

### **`icon` string**

読み取り専用、フォルダーのアイコン。

### **`iconColor` string**

フォルダーのアイコンの色。

```javascript
let folder = await eagle.folder.getById('folder_id');

// フォルダーの色を赤に設定
folder.iconColor = eagle.folder.IconColor.Red;

// または文字列値を直接使用
folder.iconColor = 'red';

// 変更を保存
await folder.save();
```

{% hint style="info" %}
注意：このプロパティは Eagle 4.0 build12 より前は読み取り専用で、変更をサポートしていませんでした。Eagle 4.0 build12 以降、このプロパティを変更できるようになりました。
{% endhint %}

### **`createdAt` Integer**

読み取り専用、フォルダーの作成時間（タイムスタンプ）。

```javascript
let date = new Date(folder.createdAt);
```

### **`parent` string**

親フォルダー ID。

```javascript
let folder = await eagle.folder.getById('folder_id');

// 親フォルダー ID を取得
console.log(folder.parent);

// 親フォルダーを変更（フォルダーを別の親フォルダーに移動）
folder.parent = 'parent_folder_id';
await folder.save();

// ルートディレクトリに移動（null または undefined に設定）
folder.parent = null;
await folder.save();
```

{% hint style="info" %}
注意：このプロパティは Eagle 4.0 build12 より前は読み取り専用で、変更をサポートしていませんでした。Eagle 4.0 build12 以降、このプロパティを変更できるようになり、このプロパティを変更することでフォルダーを異なる親フォルダーに移動できるようになりました。
{% endhint %}

### **`children` Folder\[]**

読み取り専用、子フォルダーの配列。

```javascript
let children = folder.children;

console.log(children[0]);
await children[0].open();
```

***

## 静的プロパティ <a href="#static-properties" id="static-properties"></a>

### **`IconColor` Object**

フォルダーの `iconColor` プロパティを設定するための事前定義されたフォルダーアイコンの色定数を提供します。

```javascript
// 利用可能な色定数
eagle.folder.IconColor.Red      // 'red'
eagle.folder.IconColor.Orange   // 'orange' 
eagle.folder.IconColor.Yellow   // 'yellow'
eagle.folder.IconColor.Green    // 'green'
eagle.folder.IconColor.Aqua     // 'aqua'
eagle.folder.IconColor.Blue     // 'blue'
eagle.folder.IconColor.Purple   // 'purple'
eagle.folder.IconColor.Pink     // 'pink'
```

**使用例：**

```javascript
let folder = await eagle.folder.getById('folder_id');

// 色定数を使用してフォルダーの色を設定
folder.iconColor = eagle.folder.IconColor.Blue;
await folder.save();

// 複数のフォルダーの色を一括設定
let folders = await eagle.folder.getAll();
for (let i = 0; i < folders.length; i++) {
    if (i % 2 === 0) {
        folders[i].iconColor = eagle.folder.IconColor.Green;
    } else {
        folders[i].iconColor = eagle.folder.IconColor.Purple;
    }
    await folders[i].save();
}
```

{% hint style="success" %}
**🦄 ベストプラクティス：** より良いコードヒントと型安全性のために、文字列値を直接使用するのではなく、`eagle.folder.IconColor` 定数を使用することをお勧めします。
{% endhint %}

### &#x20;<a href="#nptwx" id="nptwx"></a>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://developer.eagle.cool/plugin-api/ja-jp/api/folder.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
