Make (make.com) のシナリオで2つのブランチをマージしたい

最近、業務で(ググらビリティが低すぎることでおなじみの) Make を使うことが多い。

その Make でよくやりたくなるのが「2つのブランチをマージ」だ。例えば次のような処理。

  • A モジュールを作成して、A モジュール成功後に B モジュールを実行する
  • ただし、A モジュールが失敗したらエラーハンドリングのフローに分岐し、解決後にメインのブランチへ戻って B モジュールを実行する

図にすると以下。

───▶[A Module]────────────────────[合流]───▶[B Module]───▶
       │                             │
       └────(error)─▶[エラーを解決]──┘

[ make.com merge {branch|flow|paths} 🔍] のようなそれらしいキーワードで調べても解決方法にたどり着けなかったが、公式ヘルプの「 Converger 」に答えがあった。

Converger 自体はツールやモジュールではなく、ワークアラウンドだ。

やり方は上記の記事にも書かれているが、

  1. 先頭に共通モジュールを接続するための Router を追加する
  2. A モジュールを実行 → 次のステップで Set Variable モジュールに "status": "success" などの JSON を格納
  3. A モジュールのエラーハンドラー側 → Set Variable モジュールで "status": "error" とし、何らかのエラー内容や復旧情報も JSON で格納
  4. 先頭の Router から、後続で呼び出したい共通処理(B モジュール)を追加する
  5. 共通処理側で Get Variable モジュールから値を取得し、必要に応じて "status" を判定して処理を分ける

当初のイメージとは違ったが、こうすることで A モジュールの結果に関係なく、B モジュールを一箇所にまとめて実行できるようになった。

──[Router]────────▶[A Module]──────▶[Set Variable: {status: "success"}]
     │                             
     ├───(error)──▶[エラーを解決]───▶[Set Variable: {status: "error"}]
     │
     └───[Get Variable: status]─────▶[B Module]

No comments yet