自動化規則¶
自動化ルールを使用すると、特定のトリガーに応じて1つ以上の定義済みアクションを実行できます。例えば、フィールドが特定の値に設定されたときに活動を作成したり、最終更新から7日後にレコードをアーカイブしたりできます。
自動化ルールを作成する際、ドメインフィルタを使用すると、自動化ルールが実行されるために満たす必要のある条件を追加できます。たとえば、案件が特定の営業担当者に割り当てられている必要がある、またはレコードの状態がドラフトであってはならないなどです。
自動化ルールをOdoo ワンルームで作成するには、次の手順に従います:
自動化ルールの目的を識別する、明確で意味のある名前を付けます。
トリガーを選択し、必要に応じて、選択したトリガーに基づいて画面に表示されるフィールドに入力します。
施策を追加をクリックし、Typeから施策を選択して、選択した施策に基づいて画面に表示されるフィールドに入力します。
保存して閉じるまたは保存して新規作成をクリックします。
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:`更新前ドメイン`は、トリガーイベントが発生する*前に*レコードが満たす必要がある条件を定義します。例えば、レコードが`タイプ = 顧客請求書`および`ステータス = 転記済み`である必要があります。
開発者モードを有効化した状態で、利用可能な場合はドメインを編集をクリックし、次に新しいルールをクリックします。
追加条件、または場合によっては適用先フィルターは、トリガーイベントが発生した後にレコードが満たす必要がある条件を定義します。例えば、顧客請求書は`支払いステータス = 一部支払済`である必要があります。
必要に応じて開発者モードを有効化した状態で、関連する条件を追加またはドメインを編集をクリックし、次に新しいルールをクリックします。
:ref:`トリガー <studio/automated-actions/trigger>`が発生したとき、例えば転記済み顧客請求書の支払いステータスが更新されたときなど、自動化ルールは定義された条件をチェックし、レコードがそれらの条件に一致する場合のみ:ref:`アクション <studio/automated-actions/action>`を実行します。
Example
既存の連絡先(会社ではなく個人)にメールアドレスが初めて設定される(メールアドレスの変更とは対照的に)ときに自動化アクションを実行する場合は、`メールが設定されていない`と`会社ではない`を:guilabel:`更新前ドメイン`として使用し、`メールが設定されている`を:guilabel:`適用先`ドメインとして使用します。
注釈
:guilabel:`更新前ドメイン`は、レコードの作成時にはチェックされません。
値が更新されました¶
データベースで特定の変更が発生したときに自動化アクションをトリガーします。このカテゴリで利用可能なトリガーはモデルに依存し、特定のタグの追加(例:タスクへ)やフィールド値の設定(例::guilabel:`ユーザ`フィールドの設定)などの一般的な変更に基づいています。
トリガーを選択し、必要に応じて値を選択します。
Eメールイベント¶
メールの受信または送信時に自動アクションをトリガーします。
タイミング条件¶
日付フィールドまたはレコードの作成や更新を基準とした相対的な時点で自動化アクションをトリガーします。次のトリガーが利用可能です:
日付フィールドに基づく: 選択した日付フィールドの日付の前後、定義された期間後にアクションがトリガーされます。
作成後: レコードが作成されて保存された後、定義された期間が経過したときにアクションがトリガーされます。
最終更新後: 既存のレコードが編集されて保存された後、定義された期間が経過したときにアクションがトリガーされます。
次に、以下を定義できます:
遅延: 分、時間、日、または月の数を指定します。トリガー日の前にアクションを実行するには、負の数を指定します。日付フィールドに基づくトリガーを選択した場合は、遅延を決定するために使用する日付フィールドも選択する必要があります。
注釈
デフォルトでは、スケジューラは240分、つまり4時間ごとに時間トリガー型の自動化ルールをチェックします。この頻度は一般的に、注文日の3か月後や直近の更新の7日後などの遅延には十分です。
2400分、つまり40時間に相当する時間未満の遅延の場合、システムはこのチェックの頻度を再計算し、イベント開始日時の1時間前や作成後30分などのより細かい遅延が可能な限り正確に守られるようにします。
画面上のメッセージは、ルールのスケジュール済トリガー後の遅延の可能性を示します。
スケジューラの頻度を表示または手動で編集するには、開発者モードを有効化した状態で、に移動して、データベースのすべてのスケジュール済施策を確認します。
検索バーに`Automation`と入力し、結果のリストで自動化ルール: チェックと実行をクリックします。必要に応じて、実行間隔フィールドの値を更新します。このスケジュール済施策を手動でトリガーするには、いつでも手動実行をクリックします。
追加条件: 条件を追加をクリックし、自動化ルールを実行するために満たす必要がある条件を指定します。別の条件を追加するには、新しいルールをクリックします。
遅延に達し、条件が満たされたときにアクションが実行されます。
Example
カレンダーイベントの開始の30分前にリマインダーメールを送信するには、トリガーの日付フィールドとして開始 (カレンダーイベント)を選択し、遅延を`-30`:guilabel:分に設定します。
カスタム¶
自動アクションをトリガー:
保存時: レコードが保存されたとき。
削除時: レコードが削除されたとき。
UI変更時: レコードが保存される前でも、:ref:`フォームビュー <studio/views/general/form>`でフィールドの値が変更されたとき。
保存時およびUI変更時のトリガーでは、更新時フィールドで自動化ルールをトリガーするために使用するフィールドを選択する**必要があります**。
警告
:guilabel:`更新時`フィールドでフィールドが選択されていない場合、自動アクションはレコードごとに複数回実行される可能性があります。
オプションで、:guilabel:`適用対象`フィールドで自動化ルールをトリガーするための追加条件を定義することもできます。
Example
レコードの作成時に自動アクションをトリガーするには、例えば新しい連絡先が作成されたときに、保存時トリガーを選択し、更新前ドメインとして`ID is not set`を、適用先ドメインとして`ID is set`を使用します。更新時フィールドで正しいフィールドが選択されていることを確認してください。
新しい連絡先が保存されると、自動的にデータベースIDが割り当てられ、それにより自動化ルールがトリガーされます。
外部¶
外部システムまたはアプリケーションの特定のイベントに基づいて、:doc:`Webhook <automated_actions/webhooks>`を使用して自動化アクションをトリガーします。
OdooでWebhookが設定され、WebhookのURLが生成されてターゲットレコードが定義された後、外部システムで実装する必要があります。
警告
webhookの使用を決定する際、および実装プロセス全体を通じて、開発者、ソリューションアーキテクト、またはその他の技術的役割を持つ人に相談することを*強く推奨*します。適切に設定されていない場合、webhookはOdooデータベースを中断させる可能性があり、元に戻すのに時間がかかることがあります。
注釈
Odooデータベースでイベントが発生したときに、:ref:`外部システムのWebhookにデータを送信 <studio/automated-actions/action-webhook>`する自動化アクションを設定することも可能です。
アクション¶
自動化ルールのトリガーを定義したら、Actions To Doタブでアクションを追加をクリックして、実行するアクションを定義します。
ちなみに
同じ自動化ルールに対して複数のアクションを定義できます。デフォルトでは、アクションは定義された順序で実行されます。
つまり、たとえば:guilabel:`レコードを更新`アクションを定義し、次に更新されたフィールドを参照するメールを送信する:guilabel:`メール送信`アクションを定義した場合、メールには更新された値が使用されます。ただし、:guilabel:`メール送信`アクションが:guilabel:`レコードを更新`アクションの前に定義されている場合、メールにはレコードが更新される*前*に設定された値が使用されます。
定義されたアクションの順序を変更するには、アクションの横にある:icon:oi-draggable :guilabel:`(ドラッグハンドル)`アイコンをクリックし、目的の位置にドラッグします。
レコードを更新¶
このアクションは、レコードの(関連する)フィールドのいずれかを更新します。Updateフィールドをクリックし、開いたリストから更新するフィールドを選択または検索します。必要に応じて、フィールド名の横にある(右矢印)をクリックして、関連フィールドのリストにアクセスします。
many2manyフィールドを選択した場合は、選択した値に対して追加、削除、または設定することでフィールドを更新するか、空にするかを選択します。
Example
自動化アクションで顧客レコードからタグを削除する場合は、Updateフィールドを顧客 > タグに設定し、削除を選択してから、タグを選択します。
ちなみに
または、Pythonコードを使用してレコードのフィールドを動的に設定することもできます。これを行うには、Updateの代わりに計算を選択し、フィールドの値を計算するために使用するコードを入力します。たとえば、タスクの優先度が`High`に設定されたとき(タスクにスターを付けることで)に、自動化ルールでカスタムのdatetimeフィールドを計算する場合、トリガーをPriority is set toから`High`に定義し、Update Record施策を次のように定義できます:
活動を作成¶
この施策は、レコードにリンクされた新しい活動をスケジュールするために使用されます。Activity Typeを選択し、Titleと説明を入力してから、Due Date Inフィールドで活動をスケジュールするタイミングを指定し、User typeを選択します:
常に同じユーザに活動を割り当てるには、特定のユーザを選択し、担当者フィールドにユーザを追加します。
レコードにリンクされたユーザを動的にターゲットにするには、Dynamic User (based on record)を選択し、必要に応じてUser Fieldを変更します。
Example
リードが案件に変換された後、自動化施策でリード担当ユーザのための通話を設定します。これを行うには、Activity TypeをCallに設定し、User TypeをDynamic User (based on record)に設定します。
メール送信とSMS送信¶
これらの施策は、特定のレコードにリンクされた連絡先にメールまたはテキストメッセージを送信するために使用されます。これを行うには、Email TemplateまたはSMS Templateを選択または作成し、Send Email AsまたはSend SMS Asフィールドで、メールまたはテキストメッセージの送信方法を選択します:
メール: :guilabel:`メールテンプレート`の受信者にメッセージをメールとして送信します。
メッセージ: レコードにメッセージを投稿し、レコードのフォロワーに通知します。
メモ: チャッター内で内部ユーザーに表示される内部メモとしてメッセージを送信します。
SMS(メモなし): :guilabel:`SMSテンプレート`の受信者にメッセージをテキストメッセージとして送信します。
SMS(メモ付き): :guilabel:`SMSテンプレート`の受信者にメッセージをテキストメッセージとして送信し、チャッターに内部メモとして投稿します。
メモのみ: チャッターに内部メモとしてのみメッセージを投稿します。
WhatsApp送信¶
重要
WhatsAppメッセージの送信を自動化するには、1つ以上の:ref:`WhatsAppテンプレート <productivity/whatsapp/templates>`を作成する必要があります。
このアクションは、特定のレコードにリンクされた連絡先にWhatsAppメッセージを送信するために使用されます。これを行うには、ドロップダウンメニューから適切なWhatsAppテンプレートを選択します。
フォロワーの追加とフォロワーの削除¶
このアクションは、既存の連絡先をレコードに登録/登録解除するために使用されます。
レコードを作成¶
この施策は、任意のモデルで新しいレコードを作成するために使用されます。
Record to Createフィールドで必要なモデルを選択します(デフォルトでは現在のモデルが含まれています)。レコードのNameを指定し、別のモデルでレコードを作成する場合は、Link Fieldフィールドでフィールドを選択して、新しいレコードの作成をトリガーしたレコードをリンクします。
注釈
Link Fieldフィールドに関連するドロップダウンリストには、現在のモデルに存在するone2manyフィールドのうち、ターゲットモデルのmany2oneフィールドにリンクされているもののみが含まれます。
ちなみに
必要に応じて、新しいレコードのフィールドを更新するためにレコードを更新アクションを使用して別の自動化ルールを作成できます。たとえば、レコードを作成アクションを使用して新しいプロジェクトタスクを作成し、レコードを更新アクションを使用して特定のユーザに割り当てることができます。
コードを実行¶
重要
: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>`自動アクションを設定することも可能です。
既存アクションの実行¶
この施策は、複数の施策(現在のモデルにリンクされた)を同時にトリガーするために使用されます。これを行うには、明細追加をクリックし、Add: Child Actionsポップアップで既存の施策を選択するか、Newをクリックして新しい施策を作成します。