自動化規則¶
自動化ルールを使用すると、特定のトリガーに応じて1つ以上の定義済みアクションを実行できます。例えば、フィールドが特定の値に設定されたときに活動を作成したり、最終更新から7日後にレコードをアーカイブしたりできます。
自動化ルールを作成する際、自動化ルールを実行するために:ref:`満たす必要がある条件を追加 <studio/automated-actions/conditions>`できます。例えば、案件が特定の営業担当者に割り当てられている必要がある、またはレコードのステータスが:guilabel:`Draft`であってはならない、などです。
**Odooワンルーム**で自動化ルールを作成するには:
自動化ルールの目的を識別する、明確で意味のある名前を付けます。
:ref:`トリガー <studio/automated-actions/trigger>`を選択し、必要に応じて、選択したトリガーに基づいて画面に表示されるフィールドに入力します。
:guilabel:`Actions To Do`タブで:ref:`アクションを追加 <studio/automated-actions/action>`をクリックします。
アクションの:guilabel:`Type`を選択し、選択したアクションに基づいて関連するフィールドを入力します。
:guilabel:`保存して閉じる`をクリックするか、追加のアクションを定義するには:guilabel:`保存して新規作成`をクリックします。
Example
満足度の低い顧客へのフォローアップを確実にするため、この自動化ルールは、満足度が30%未満の顧客に対して販売オーダ作成の3か月後に活動を作成します。
ちなみに
:guilabel:`メモ`タブを使用して、自動化ルールの目的と動作を記録します。これにより、ルールの保守が容易になり、ユーザー間のコラボレーションが促進されます。
自動化ルールが対象とする:doc:`モデル <models_modules_apps>`を変更するには、ワンルームで:guilabel:`自動化`をクリックする前にモデルを切り替えるか、:ref:`開発者モードを有効化 <developer-mode>`して自動化ルールを作成または編集し、:guilabel:`自動化ルール`フォームで:guilabel:`モデル`を選択します。
自動化ルールは、かんばんステージ名の上にカーソルを置いたときに表示される:icon:
fa-cog:guilabel:`(設定)`アイコンをクリックし、:guilabel:`自動化`を選択することで、任意のかんばんステージから作成できます。この場合、:guilabel:`トリガー`はデフォルトで:guilabel:`ステージが設定されたとき`に設定されますが、必要に応じて変更できます。
トリガー¶
:guilabel:`トリガー`は、自動化ルールを実行するためにどのような種類のイベントが発生する必要があるかを定義するために使用されます。使用可能なトリガーは:doc:`モデル <models_modules_apps>`によって異なります。全体で5つのトリガーカテゴリが利用可能です:
条件の追加¶
ドメインフィルターを使用すると、自動化ルールが対象とするレコードまたは除外するレコードを決定できます。効率的なフィルタリングは、ルールの影響を受けないレコードに対する不要な処理を回避するため、全体的なパフォーマンスを向上させます。
ちなみに
自動化ルールを作成する前に:ref:`開発者モードを有効化 <developer-mode>`して、ドメインフィルターの追加において最大限の柔軟性を持たせます。
選択したトリガーに応じて、トリガーが発生する*前*と*後*にレコードが満たす必要がある1つ以上の条件を定義できます。
:guilabel:`更新前ドメイン`は、トリガーイベントが発生する*前に*レコードが満たす必要がある条件を定義します。例えば、レコードが`タイプ = 顧客請求書`および`ステータス = 転記済み`である必要があります。
開発者モードを有効化した状態で、利用可能な場合は:guilabel:`ドメインを編集`をクリックし、次に:guilabel:`新規ルール`をクリックします。
:guilabel:`適用条件`ドメインは、トリガーイベントが発生した*後に*レコードが満たす必要がある条件を定義します。例えば、顧客請求書が`支払いステータス = 一部支払済み`である必要があります。
開発者モードを有効にした状態で、:guilabel:`ドメインを編集`をクリックしてから:guilabel:`新しいルール`をクリックします。
:ref:`トリガー <studio/automated-actions/trigger>`が発生したとき、例えば転記済み顧客請求書の支払いステータスが更新されたときなど、自動化ルールは定義された条件をチェックし、レコードがそれらの条件に一致する場合のみ:ref:`アクション <studio/automated-actions/action>`を実行します。
Example
既存の連絡先(会社ではなく個人)にメールアドレスが初めて設定される(メールアドレスの変更とは対照的に)ときに自動化アクションを実行する場合は、`メールが設定されていない`と`会社ではない`を:guilabel:`更新前ドメイン`として使用し、`メールが設定されている`を:guilabel:`適用先`ドメインとして使用します。
注釈
:guilabel:`更新前ドメイン`は、レコードの作成時にはチェックされません。
値が更新されました¶
データベースで特定の変更が発生したときに自動化アクションをトリガーします。このカテゴリで利用可能なトリガーはモデルに依存し、特定のタグの追加(例:タスクへ)やフィールド値の設定(例::guilabel:`ユーザ`フィールドの設定)などの一般的な変更に基づいています。
トリガーを選択し、必要に応じて値を選択します。
Eメールイベント¶
メールの受信または送信時に自動アクションをトリガーします。
タイミング条件¶
日付フィールドまたはレコードの作成や更新を基準とした相対的な時点で自動化アクションをトリガーします。次のトリガーが利用可能です:
Based on date field:選択した日付フィールドの日付の*前または後*の定義された期間にアクションがトリガーされます。例:契約終了日の30日前。
作成後: レコードが作成されて保存された後、定義された期間が経過したときにアクションがトリガーされます。
最終更新後: 既存のレコードが編集されて保存された後、定義された期間が経過したときにアクションがトリガーされます。
:guilabel:`Timing Conditions`トリガーを設定するには、:ref:`開発者モードを有効にした状態 <developer-mode>`で次の操作を行います:
:guilabel:`Timing Conditions`カテゴリから適切な:guilabel:`Trigger`を選択します。:guilabel:`Based on date field`トリガーを選択した場合は、関連する日付フィールドを選択します。
Delay`を設定して、アクションの*実行日時*を決定します。そのためには、アクションがトリガーされるまでの:guilabel:`Minutes、Hours、Days、または:guilabel:`Months`の数を入力します。:guilabel:`Based on date field`トリガーを選択した場合、選択した日付フィールドの:guilabel:`After`または:guilabel:`Before`にアクションをトリガーできます。
必要に応じて、ルールがトリガーされる前および/または後にレコードが満たす必要がある:ref:`条件を追加 <studio/automated-actions/conditions>`します。
:guilabel:`Save manually`をクリックします。
:guilabel:`Scheduled action`をクリックして、:guilabel:`Automation Rules: check and execute`スケジュール済アクションを開きます。
注釈
このスケジュール済アクションは、前回の実行以降に到達した実行日時をチェックし、関連するアクションを必要に応じて実行します。デフォルトでは、スケジュール済アクションは:guilabel:`Execute Every`4時間に設定されており、これは注文日から3か月後や最終更新から7日後などの遅延に対して一般的に十分です。
自動化ルールに40時間相当未満の遅延を持つ時間ベースのトリガー(例:イベント開始日時の3時間前)がある場合、スケジュール済アクションの頻度は自動的に増加します(例::guilabel:`Execute Every`18分)。これにより、スケジュールされた実行日時に近いタイミングでアクションを実行できます。
左上の:guilabel:`手動で実行`をクリックします。
警告
このステップは、ルールが過去のレコードに対して遡及的に実行されるのを防ぐために重要です。スケジュール済アクションを手動で実行すると、自動化ルールの*直近実行*のタイムスタンプが初期化されます。これはルールの:ref:`実行ロジック <studio/automated-actions/trigger-timing-conditions-logic>`の重要な要素です。
パンくずリストの自動化ルール名をクリックして、自動化ルールの設定に戻ります。
実行するアクション <studio/automated-actions/action>`を追加し、すべてのアクションが定義されたら、:icon:`fa-cloud-upload :guilabel:`手動で保存`をクリックします。
アクションは、実行日時に達した後に:guilabel:`自動化ルール:チェックして実行`スケジュール済アクションが初めて実行され、条件が満たされたときに実行されます。
実行ロジック¶
時間ベースのトリガーを使用する場合、アクションは実行日時がスケジュール済アクションの直近実行と現在の実行(スケジュール済または手動実行)の*間*に該当する場合にのみ実行されます。つまり:
直近実行 --> 実行日時 --> 現在の実行
注釈
:guilabel:`自動化ルール:チェックして実行`スケジュール済アクションを手動で実行しても、必ずしもルールのアクションが実行されるわけではありません。時間ベースのトリガーを持つ自動化ルールをテストする際は、この順序が真であることを確認してから、アクションが実行されたかどうかを確認してください。
Example
10月15日の朝、:guilabel:`契約終了日`の30日前にメールを送信するトリガーを持つ自動化ルールを作成します。契約は契約終了日の午後11時59分に終了します。ルールの作成中、:guilabel:`自動化ルール:チェックして実行`スケジュール済アクションが午前11時に手動で実行され、その後4時間ごとに実行されるように設定されました。
この新しい自動化ルールは、終了日がルールの作成から少なくとも30日*後*の契約、つまり11月14日以降の終了日を持つ契約に適用されます。
終了日が11月14日の契約の場合、アクションの実行日時は10月15日の午後11時59分です。したがって、アクションはその日時が経過した後に:guilabel:`自動化ルール:チェックして実行`スケジュール済アクションが初めて実行されたときに実行されます。つまり:
スケジュール済アクションの直近実行:10月15日午後11時
実行日時:10月15日午後11時59分
スケジュール済アクションの現在の実行:10月16日午前3時
カスタム¶
自動アクションをトリガー:
作成時: レコードが初めて保存されたとき。
作成時と編集時: レコードが初めて保存されたときとその後のすべての保存時。
削除時: レコードが削除されたとき。
UI変更時: レコードが保存される前でも、:ref:`フォームビュー <studio/views/general/form>`でフィールドの値が変更されたとき。
:guilabel:`作成時と編集時`および:guilabel:`UI変更時`トリガーの場合、:guilabel:`更新時`フィールドで自動化ルールをトリガーするために使用するフィールドを選択する**必要があります**。
警告
:guilabel:`更新時`フィールドでフィールドが選択されていない場合、自動アクションはレコードごとに複数回実行される可能性があります。
オプションで、:guilabel:`適用対象`フィールドで自動化ルールをトリガーするための追加条件を定義することもできます。
外部¶
外部システムまたはアプリケーションの特定のイベントに基づいて、:doc:`Webhook <automated_actions/webhooks>`を使用して自動化アクションをトリガーします。
OdooでWebhookが設定され、WebhookのURLが生成されてターゲットレコードが定義された後、外部システムで実装する必要があります。
警告
webhookの使用を決定する際、および実装プロセス全体を通じて、開発者、ソリューションアーキテクト、またはその他の技術的役割を持つ人に相談することを*強く推奨*します。適切に設定されていない場合、webhookはOdooデータベースを中断させる可能性があり、元に戻すのに時間がかかることがあります。
注釈
Odooデータベースでイベントが発生したときに、:ref:`外部システムのWebhookにデータを送信 <studio/automated-actions/action-webhook>`する自動化アクションを設定することも可能です。
アクション¶
自動化ルールの:ref:`トリガー <studio/automated-actions/trigger>`を定義したら、:guilabel:`実行するアクション`タブで:guilabel:`アクションを追加`をクリックして、実行するアクションを定義します。
ちなみに
明示的な名前が入力されていない場合、アクション名は定義したアクションに基づいて自動的に生成されます。名前はいつでも更新できます。
同じ自動化ルールに対して複数のアクションを定義できます。デフォルトでは、アクションは定義された順序で実行されます。
つまり、たとえば:guilabel:`レコードを更新`アクションを定義し、次に更新されたフィールドを参照するメールを送信する:guilabel:`メール送信`アクションを定義した場合、メールには更新された値が使用されます。ただし、:guilabel:`メール送信`アクションが:guilabel:`レコードを更新`アクションの前に定義されている場合、メールにはレコードが更新される*前*に設定された値が使用されます。
定義されたアクションの順序を変更するには、アクションの横にある:icon:
oi-draggable:guilabel:`(ドラッグハンドル)`アイコンをクリックし、目的の位置にドラッグします。
レコードを更新¶
このアクションは、レコードの(関連)フィールドの1つを更新するために使用されます。次のオプションが利用可能です:
更新: 選択したフィールドを指定された値で更新します。
AIで更新: 入力されたAIプロンプトに基づいて、選択したフィールドを動的に更新します。このオプションを使用するには、**Odoo AI**アプリがインストールされている必要があります。
シーケンス: 選択したフィールドを定義されたシーケンスで更新します。
計算: Pythonコードを使用して、選択したフィールドを動的に更新します。
アクションを定義するには:
必要に応じて:guilabel:
更新、AIで更新、シーケンス、または:guilabel:計算`オプションを選択し、更新または計算するフィールドを選択または検索します。必要に応じて、フィールド名の横にある:icon:`oi-chevron-right:guilabel:`(右矢印)`をクリックして、関連フィールドのリストにアクセスします。選択したオプションに基づいて関連情報を入力します。
更新¶
フィールドの更新値を選択または入力します。
many2manyフィールド <studio/fields/relational-fields-many2many>`を更新する場合、:guilabel:`追加、削除、設定、または:guilabel:`空にする`のいずれかを選択して、フィールドを更新する方法を選択します。
AIで更新¶
プロンプトを入力して、Odoo AIにフィールドの更新方法を指示します。`/`を入力して:guilabel:`AIプロンプトツール`を開き、:guilabel:`フィールドセレクター`を使用してOdoo AIにコンテキストを確認する関連フィールドを指定し、:guilabel:`レコードセレクター`を使用して更新フィールドの可能な値を提供します。
シーケンス¶
既存のシーケンスを選択するか、新しいシーケンスを作成するには:
開いたウィンドウで、シーケンスの:guilabel:`名前`を入力します。
:guilabel:`シーケンス`タブで、シーケンスを設定します:
プレフィックス: シーケンスの次の番号の*前*に追加される文字。
サフィックス: シーケンスの次の番号の*後*に追加される文字。
シーケンスサイズ: シーケンス内のすべての番号の桁数を決定します。必要に応じて、指定されたシーケンスサイズを達成するために、番号の前にゼロが追加されます。たとえば、シーケンスサイズが`5`の場合、シーケンスの最初の番号は`00001`になります。
ステップ: シーケンス内の番号間の増分を決定します。
次の番号: シーケンスで使用される次の番号(先頭のゼロなし)。
ちなみに
保存 をクリックします。
Example
新しい顧客が作成されるたびに、自動アクションで順次顧客参照を作成する場合は、:guilabel:`シーケンス`フィールドを:guilabel:`参照`に設定し、ドロップダウンで:guilabel:`さらに検索`をクリックします。:guilabel:`新規`をクリックして、新しいシーケンスを作成します。
この例では、新しい顧客ごとに`#-REF-%(year)s-というプレフィックス(ここで`%(year)s`は世紀を含む現在の年)と/CL`というサフィックスを持つ連番の参照が割り当てられます。例:#-REF-2025-00001/CL、`#-REF-2025-00002/CL`など。
集計日¶
フィールドの値を計算するために使用するコードを入力します。
レコードを作成とレコードを複製¶
これらのアクションは、任意のモデルで新しいレコードまたは複製されたレコードを作成するために使用されます。
アクションを定義するには:
アクションの:guilabel:`タイプ`として、必要に応じて:guilabel:`レコードを作成`または:guilabel:`レコードを複製`を選択し、:guilabel:`作成するレコード`フィールドで必要なモデルを選択します。このフィールドにはデフォルトで現在のモデルが含まれています。
レコードの:guilabel:`名前`を指定するか、アクションがレコードを複製する場合は、:guilabel:`複製元`フィールドで複製されるレコードを指定します。
新しいレコードまたは複製されたレコードが別のモデルで作成される場合は、:guilabel:`リンクフィールド`フィールドでフィールドを選択して、新しいレコードまたは複製されたレコードの作成をトリガーしたレコードをリンクします。
ちなみに
:guilabel:`リンクフィールド`ドロップダウンメニューには、ターゲットモデルの:ref:`many2oneフィールド <studio/fields/relational-fields-many2one>`にリンクされた、現在のモデルに存在する:ref:`one2manyフィールド <studio/fields/relational-fields-one2many>`のみが含まれています。
活動を作成¶
このアクションは、レコードにリンクされた新しい活動をスケジュールするために使用されます。
アクションを定義するには:
メール送信とSMS送信¶
これらのアクションは、特定のレコードにリンクされている連絡先に電子メールまたは文字列メッセージを送信するために使用されます。
アクションを定義するには:
アクションの:guilabel:`タイプ`として:guilabel:`メール送信`または:guilabel:`SMS送信`が選択されている場合、必要に応じて:guilabel:`メールテンプレート`または:guilabel:`SMSテンプレート`を選択または作成します。
:guilabel:`メール送信者`または:guilabel:`SMS送信者`フィールドで、電子メールまたは文字列メッセージの送信方法を選択します。
電子メールの場合は、次のいずれかを選択します:
メール: :guilabel:`メールテンプレート`の受信者にメッセージをメールとして送信します。
メッセージ: レコードにメッセージを投稿し、レコードのフォロワーに通知します。
メモ: チャッター内で内部ユーザーに表示される内部メモとしてメッセージを送信します。
文字列メッセージの場合は、次のいずれかを選択します:
WhatsApp送信¶
重要
WhatsAppメッセージの送信を自動化するには、1つ以上の:ref:`WhatsAppテンプレート <productivity/whatsapp/templates>`を作成する必要があります。
このアクションは、特定のレコードにリンクされている連絡先にWhatsAppメッセージを送信するために使用されます。
アクションの:guilabel:`タイプ`として:guilabel:`WhatsApp送信`が選択されている場合、ドロップダウンメニューから適切な:guilabel:`WhatsAppテンプレート`を選択します。
フォロワーの追加とフォロワーの削除¶
このアクションは、既存の連絡先をレコードのフォロワーとして登録/登録解除するために使用されます。
アクションの:guilabel:`タイプ`として:guilabel:`フォロワーを追加`または:guilabel:`フォロワーを削除`が選択されている場合、必要に応じて:guilabel:`フォロワータイプ`を選択します:
常に同じ連絡先を追加/削除するには、:guilabel:`特定のフォロワー`を選択してから、ドロップダウンメニューから連絡先を選択します。複数の連絡先を追加/削除できます。
レコードに動的にリンクされている連絡先を追加/削除するには、動的フォロワー`を選択します。必要に応じて、プレースホルダーフィールド名をクリックし、表示されるリストからパートナーフィールドを選択または検索して、:guilabel:`フォロワーフィールド`を変更します。フィールド名の横にある:icon:`oi-chevron-right :guilabel:`(右矢印)`をクリックすると、必要に応じて関連フィールドにアクセスできます。
Example
顧客にプロジェクトの進捗状況を通知し続けるため、この自動アクションは、プロジェクトタスクが「進行中」に設定されたときに、関連する顧客をフォロワーとして追加します。
コードを実行¶
重要
:ref:`カスタムコード <studio/automated-actions/action-execute-code>`の実行を必要とする自動化ルールの場合、カスタムコードのメンテナンスは*標準*または*カスタム*料金プランに含まれておらず、:ref:`追加料金 <charges_standard>`が発生することに注意してください。
このアクションはPythonコードを実行するために使用されます。:guilabel:`コード`タブに次の変数を使用してコードを記述できます:
env: アクションがトリガーされる環境model: アクションがトリガーされるレコードのモデル。空のレコードセットrecord: アクションがトリガーされるレコード。空の場合がありますrecords: マルチモードでアクションがトリガーされるすべてのレコードのレコードセット。空の場合がありますtime、datetime、dateutil、timezone: 便利なPythonライブラリfloat_compare: 特定の精度に基づいて浮動小数点数を比較するユーティリティ関数log(message, level='info'):ir.loggingテーブルにデバッグ情報を記録するログ関数_logger.info(message):サーバログにメッセージを出力するロガーUserError:ユーザ向け警告メッセージを発生させる例外クラスCommand:x2manyコマンド名前空間action = {...}:アクションを返す
ちなみに
利用可能な変数は、コードタブとヘルプタブの両方に記載されています。
Webhook通知を送信¶
このアクションは、URL`フィールドで指定されたWebhook URLに、選択された:guilabel:`フィールド`の値を含む`POST APIリクエストを送信するために使用されます。
サンプルペイロードは、ランダムなレコードのデータを使用して、またはレコードが利用できない場合はダミーデータを使用して、申請に含まれるデータのプレビューを提供します。
注釈
外部システムで事前定義されたイベントが発生したときに、:doc:`Webhookを使用して外部システムからデータを受信する <automated_actions/webhooks>`自動アクションを設定することも可能です。
複数アクション¶
このアクションは、複数のアクション(現在のモデルにリンクされている)を同時にトリガーするために使用されます。
アクションを定義するには:
:guilabel:`複数アクション`をアクションの:guilabel:`タイプ`として選択した状態で、:guilabel:`アクションを追加`をクリックします。
:guilabel:`追加: 子アクション`ポップアップで:
必要な回数だけ繰り返します。