> ## Documentation Index
> Fetch the complete documentation index at: https://docs.twenty.com/llms.txt
> Use this file to discover all available pages before exploring further.

# ワークフローアクション

> Twenty のワークフローで利用可能なアクションについて学びましょう。

export const VimeoEmbed = ({videoId, title = 'Video'}) => <div style={{
  padding: '69.01% 0 0 0',
  position: 'relative',
  margin: '32px 0px',
  borderRadius: '16px',
  overflow: 'hidden',
  border: '2px solid black'
}}>
    <iframe src={`https://player.vimeo.com/video/${videoId}?autoplay=1&loop=1&autopause=0&background=1&app_id=58479`} frameBorder="0" allow="autoplay; fullscreen; picture-in-picture; clipboard-write" style={{
  position: 'absolute',
  top: 0,
  left: 0,
  width: '100%',
  height: '100%',
  transform: 'scale(1.1)'
}} title={title} />
  </div>;

## アクションについて

アクションはトリガーが起動した後に何が起こるかを定義します。 複数のアクションを連結して、複雑な自動化を構築できます。

<Tip>
  * 変数ピッカー（`(x+)` アイコンをクリック）を使用して、前の手順から利用可能なデータを参照します
  * 任意の入力フィールドにカーソルを合わせると、変数がどのステップから来ているかがわかります—同じフィールド（例：ID）が複数の前のステップに存在する場合に便利です
  * 保守しやすくするため、各アクションにわかりやすい名前を付けてください
</Tip>

## レコードアクション

<img src="https://mintcdn.com/twenty/ZVHVYG6uDKpO6cME/images/user-guide/workflows/workflow_actions.png?fit=max&auto=format&n=ZVHVYG6uDKpO6cME&q=85&s=76371d6cc755528643859025c3fad709" style={{width:'100%'}} width="1596" height="2268" data-path="images/user-guide/workflows/workflow_actions.png" />

### レコードを作成

選択したオブジェクトに新しいレコードを追加します。

**設定**：

* 対象オブジェクトを選択
* 必要およびオプションのフィールドに入力
* 前の手順のデータを使用するか、手動で値を入力してフィールドに設定します

**出力**：新しく作成されたレコードのデータが後続の手順で使用可能

### レコードを更新

選択したオブジェクト内の既存のレコードを変更します。

<img src="https://mintcdn.com/twenty/ZVHVYG6uDKpO6cME/images/user-guide/workflows/update_record.png?fit=max&auto=format&n=ZVHVYG6uDKpO6cME&q=85&s=779714633fc4472e6fd67a3de73f1323" style={{width:'100%'}} width="1584" height="1120" data-path="images/user-guide/workflows/update_record.png" />

**設定**：

* 対象オブジェクトを選択
* 更新する具体的なレコードを選択.
  * 利用可能なすべてのレコードを表示するドロップダウンメニューから、固定のレコードを選択できます。
  * または、`(x+)` を使用して前のステップで見つかったレコードを指定し、レコードを動的に選択できます。 この段階では、異なる条件に基づいてレコードを検索することはできません。 まだレコードを特定していない場合は、この `Update Record` ステップの前に `Search Record` ステップを追加してください。
* 変更するフィールドを選択し、新しい値を入力

**出力**：更新されたレコードのデータが後続の手順で使用可能

### レコードを削除

選択したオブジェクトからレコードを削除します。

**設定**：

* 対象オブジェクトを選択
* 削除する具体的なレコードを選択

**出力**：削除されたレコードのデータは後続の手順で使用可能

### レコードを検索

選択したオブジェクト内のフィルター条件を使用してレコードを探します。

**設定**：

* 検索するオブジェクトを選択
* 結果を絞り込むためのフィルター基準を設定
* 並べ替えや制限を設定

**出力**：一致するレコードを返し、後続の手順で使用可能

<Note>
  **制限**：Search Records は最大 **200 件のレコード**を返します。 さらに処理する必要がある場合は、結果を絞り込むフィルターを追加するか、スケジュールされたワークフローを使用してバッチ処理してください。
</Note>

**ベストプラクティス**：Search Records の後に[ブランチ](/l/ja/user-guide/workflows/capabilities/workflow-branches)を使用して、「見つかった」と「見つからない」のシナリオを処理します。

### Upsert Record

一致条件に基づいて、新しいレコードを作成するか、既存のレコードを更新します。 レコードが既に存在するかどうか確信が持てない場合に便利です。

<img src="https://mintcdn.com/twenty/ZVHVYG6uDKpO6cME/images/user-guide/workflows/upsert_double_identifier.png?fit=max&auto=format&n=ZVHVYG6uDKpO6cME&q=85&s=f9e702ec5b631af03515d9e8af633216" style={{width:'100%'}} width="2908" height="2288" data-path="images/user-guide/workflows/upsert_double_identifier.png" />

**設定**：

* 対象オブジェクトを選択
* どのフィールドがマッチングに使用できるかに注意してください：People には email、Companies には domain、任意のオブジェクトには ID、または Unique としてマークされた任意のフィールド。 以下のうち少なくとも 1 つは入力する必要があります。
* フィールドの値を入力します。 少なくとも 1 つの一意の識別子を必ず入力してください。

<Note>
  **通常、一意の識別子を 1 つだけ追加するほうがマッチングはうまく機能します。** 例えば、以下のスクリーンショットでは、ドメインに基づいて会社を照合します。 ID は必ずしも必要ではありません。
</Note>

<img src="https://mintcdn.com/twenty/ZVHVYG6uDKpO6cME/images/user-guide/workflows/upsert_simple_identifier.png?fit=max&auto=format&n=ZVHVYG6uDKpO6cME&q=85&s=8bd8daf7e4a064c529337d77f0d17b19" style={{width:'100%'}} width="2924" height="2308" data-path="images/user-guide/workflows/upsert_simple_identifier.png" />

* 前の手順からのデータを使用してフィールドを埋める

**仕組み**:

1. 指定した条件に一致するレコードを検索します
2. 見つかった場合 → 既存のレコードを更新します
3. 見つからない場合 → 新しいレコードを作成します

**出力**：作成または更新されたレコードのデータは後続の手順で使用できます。

## フローアクション

### イテレータ

**前の手順から返されたレコード配列をループ**し、各レコードに個別にアクションを実行できます。

**設定**：

* 前の手順からレコードの配列を選択します（例：Search Records の結果、Bulk に対応した手動トリガー、コードノード）。 Code または Logic Function ステップがトップレベルの配列を返す場合は、その出力全体をループ処理するために **Whole list** オプションを選択します。
* ループ内の各レコードで実行するアクションを定義.

<Note>
  - イテレーター内に複数のアクションを追加できます。
  - イテレーター内で分岐を使用する場合、各分岐の最後のステップがループを閉じるようにイテレーターへ戻る接続になっていることを確認してください。
</Note>

* `Current Item` フィールドにアクセス：現在処理中のレコードのフィールドを使用するには、**Iterator** ステップをクリックし、**Current item** を選択します。 そのレコードで使用可能なフィールドの一覧が表示され、後続のアクションで使用するために選択できます。 現在のアイテム全体を後続ステップに渡すには、**Use the whole item** を選択することもできます。

<VimeoEmbed videoId="1146577247" title="デモ動画" />

### フィルター

指定された条件に基づいてレコードをフィルタリングし、条件を満たすレコードのみを通過させます。

**設定**：

* フィルター対象のレコードを選択
* フィルタ条件と基準を定義
* 後続の手順に通過するレコードを設定

<Note>
  1. **出力**：フィルターノードはデータを返しません—ゲートとして機能します。 条件を満たす場合、ワークフローは継続します。 満たさない場合、その分岐でワークフローは停止します。
  2. `IS` 演算子は数値フィールドで使用できます。 これは `EQUAL` と同様に動作します。
</Note>

### 遅延

指定した期間、または特定の日時までワークフローの実行を一時停止します。

**遅延の種類**：

| タイプ      | 説明                    |
| -------- | --------------------- |
| **期間**   | 指定した時間（日、時間、分、秒）待機します |
| **予定日時** | 特定の日時まで待機します          |

**期間の設定**：

* 日、時間、分、秒を設定します
* 複数の単位を組み合わせます（例：2日と4時間）

**予定日時の設定**：

* 日付と時刻を選択します
* 前の手順の日付フィールドを参照できます（例：ミーティングの3日後にフォローアップ）

**ユースケース**：

* フォローアップメールを送信する前に24時間待機する
* 商談のクローズ日まで一時停止する
* 営業時間内にアクションを実行するようスケジュールする

<Note>
  予定日時は過去に設定できません。 前の手順の日付フィールドを使用し、その日付がすでに過去の場合、ワークフローは失敗します。
</Note>

**制限とクレジット**：

* **最大期間の制限はありません**—分、日、週、さらに長い遅延を設定できます
* 期間に関係なく、Delay ノードの実行時に**1 クレジットを消費**します
* 待機中は**クレジットは消費されません**—5分の遅延も5日の遅延もコストは同じです

## コミュニケーションアクション

### メールを送信

ワークフローからメールを送信します。 テンプレート化されたグループメールに最適です。 メールは、メールボックスから送信するメールと同様の見た目になります。
ニュースレター（よりリッチな書式が必要）や自動メール配信には適していません。

**前提条件**：設定 → アカウントでメールアカウントを追加

**設定**：

* 送信元のメールアカウントを選択

<Note>
  自分の Twenty アカウントと同期されたメールボックスからのみメールを送信できます。 他のチームメンバーのメールボックス（例：アカウント所有者のメール）からの送信はロードマップにあります。
</Note>

以降のすべての手順で、パーソナライズのために前の手順の変数を参照できます。

* 受信者のメールアドレスを入力.

<Note>
  現在は受信者は1名のみです。
</Note>

* 件名を設定.
* メッセージ本文を作成. リンクの書式設定、番号付きリストや箇条書きの作成、添付ファイルの追加ができます。

<Note>
  現在、HTML署名の追加はできません。
</Note>

### フォーム

ワークフロー実行中にフォームをプロンプトしてユーザー入力を収集します。 回答はその後、後続の手順で、入力に基づいてレコード作成、メール送信、その他のアクションの実行に利用できます。

<Warning>
  **フォームは手動トリガー専用に設計されています。** 他のトリガーを持つワークフロー（レコード作成、更新など）では、ユーザーが期待する体験とは異なり、フォームにはワークフロー実行インターフェースからのみアクセス可能です。 通知センターは、2026年に自動化されたワークフローでフォームを適切にサポートするためにリリースされます。
</Warning>

**設定**：

* ユーザーに入力してもらうフィールドを設定します。 各フィールドについて、次を選択します。
  * テキスト、数値、日付、特定のレコード、セレクトフィールドのいずれかのタイプ。 すべてのオブジェクトのセレクトフィールドが利用可能です。
  * ラベル
  * `Placeholder` のデフォルト値（任意）
* フォームのタイトルを編集

**出力**：フォームレスポンスが後続の手順で使用可能

**例**：「Quick Lead」ワークフローはすべてのワークスペースでデフォルトで利用可能で、コマンドメニュー `Cmd + K` のどこからでも利用できます。

**フォームの記入方法**：

* コマンドメニュー `Cmd K` から手動ワークフローをトリガーします
* サイドパネルに表示されるフォームに入力し、`Submit` をクリックします。

<Note>
  フィールドを必須にすることはできません。
</Note>

<VimeoEmbed videoId="1147277989" title="デモ動画" />

## 統合アクション

### コード

ワークフロー内でカスタムJavaScriptを実行します。

内部的には、それぞれの Code アクションは独自の **ロジック関数** によって支えられています。これは Twenty プラットフォーム上で実行されるサーバーサイドの TypeScript 関数です。 Code アクションを追加すると、Twenty はそのステップ専用のロジック関数を作成し、そのエディタをインラインで表示します。そのため、記述したコードはワークフローと一体となって存在します。

**設定**：

* 前の手順からの変数にアクセス. 変数名を動的に編集できます。

<VimeoEmbed videoId="1147281795" title="デモ動画" />

* エディタでJavaScriptコードを記述
* 後続の手順で使用するための変数を返す
* ステップ内でコードを直接テスト

<Note>
  コードで外部のAPIキーを使用する必要がある場合は、関数本体に直接入力する必要があります。 他の場所でAPIキーを設定したり、ロジック関数で参照したりすることはできません。
</Note>

<Tip>
  **配列を扱っていますか？** 外部システムや前の手順からの配列は、文字列として渡される場合があります。 配列の扱いの詳細については、[Code アクションで配列を扱う](/l/ja/user-guide/workflows/how-tos/advanced-configurations/handle-arrays-in-code-actions)を参照してください。
</Tip>

<Tip>
  コードエディタ右上の四角いアイコンをクリックすると全画面表示になります — デフォルトのエディタ幅には制限があるため便利です。
</Tip>

#### ワークフロー間でロジック関数を再利用する

インラインの Code アクションは単発のロジックには最適ですが、その中に保持されるコードはその 1 つのステップ専用のものです。 複数のワークフロー間で同じロジックを共有したい場合や、アプリ内でバージョン管理されたソースとして維持したい場合は、各 Code アクションにコードをコピーペーストするのではなく、**再利用可能なロジック関数** を定義します。

ロジック関数は、アプリ内で一度だけ（SDK の `defineLogicFunction` を使用して）定義され、`workflowActionTriggerSettings` を追加することでワークフロービルダーに公開されます。 アプリがインストールされると、その関数は組み込みアクションと並んで、ワークフロービルダー内で 1 つのアクションとして表示されます。 それを選択すると、宣言した入力スキーマから生成された入力フィールド（他のアクションと同様に変数ピッカー付き）が表示され、共有コードが実行されます。インラインの JavaScript は不要です。

|            | コードアクション                          | 再利用可能なロジック関数               |
| ---------- | --------------------------------- | -------------------------- |
| **コードの所在** | インラインエディタで記述され、1 つのワークフローステップに紐づく | アプリ内で定義され、ソース管理でバージョン管理される |
| **再利用性**   | ステップごとにコピー&ペースト                   | 任意のワークフローでアクションとして追加可能     |
| **入力**     | エディタ内で接続された変数                     | 宣言した入力スキーマからレンダリングされるフィールド |
| **最適な用途**  | 手早く記述できる、ワークフロー固有のロジック            | 複数のワークフローで使用される共有ロジック      |

両者は同じロジック関数ランタイム上で実行されるため、インラインで試作した Code アクションは、最小限の変更で再利用可能なロジック関数へ昇格させることができます。

<Tip>
  ロジック関数を定義し、それらをワークフロービルダーに公開する方法に関する開発者向けリファレンスについては、[Logic Functions](/l/ja/developers/extend/apps/logic/logic-functions) を参照してください。特に **Exposing a function as an AI tool or workflow action** セクションと `workflowActionTriggerSettings` を確認してください。
</Tip>

### HTTPリクエスト

ワークフローの一部として外部APIにリクエストを送信します。

<img src="https://mintcdn.com/twenty/ZVHVYG6uDKpO6cME/images/user-guide/workflows/http_action.png?fit=max&auto=format&n=ZVHVYG6uDKpO6cME&q=85&s=5dbab86e7023e617fe37b8fc6e3da7a3" style={{width:'100%'}} width="1568" height="1968" data-path="images/user-guide/workflows/http_action.png" />

**設定**：

* APIエンドポイントURLを入力. 前の手順のパラメーターを使用できます。
* HTTPメソッドを選択（GET, POST, PUT, PATCH, DELETE）
* 必要なヘッダと値を追加
* 構造プレビューのためにサンプルレスポンスを提供

## AI アクション

### AI エージェント - 近日公開

ワークフロー内でAIエージェントを実行し、インテリジェントなタスクを実行します。

**設定**：

* **エージェント**：既存のAIエージェントを選択するか、デフォルトのエージェントを使用します
* **プロンプト**：AIエージェントへの指示を作成します
* プロンプト内で前の手順の変数を参照します

**AI エージェントでできること**：

* データを分析・要約する
* レコードを分類・カテゴリ化する
* テキストコンテンツを生成する
* データに基づいて意思決定する
* ツールを使って CRM データと対話する

**出力**：AIエージェントの応答は後続の手順で使用できます。 エージェントに構造化された出力スキーマがある場合、応答はその形式に従います。

<Note>
  AIエージェントのアクションは、使用するAIモデルに応じてワークフロークレジットを消費します。 詳細は[ワークフロークレジット](/l/ja/user-guide/workflows/capabilities/workflow-credits)を参照してください。
</Note>

<Note>
  AIエージェントはロールベースの権限に従います。 **設定 → メンバー → ロール** でエージェントに特定のロールを割り当て、アクセスできるデータを制御できます。 詳細は[権限](/l/ja/user-guide/permissions-access/capabilities/permissions)を参照してください。
</Note>
