SaaS

Workato: 定期実行タスクを1レシピにまとめて節約する

こんにちは、りょうたろうです。

Workatoで動かしている処理が増えてきたので、この辺で節約術をやろうと整理したので公開したいと思います!

Workatoで悩ましいこと

Workatoの料金体系にはレシピ数に対する金額があります。レシピとはSaaSでの処理を並べた一つの自動化の単位です (こちらに詳しく書いています)。

Workatoではこの金額が1,000円とかカジュアルな金額ではないので「そのレシピは金額分の改善効果があるの?」とか気になり始め、例えば「毎朝Trelloの未完了タスクをSlackにリマインドしよう」「毎日前日分の集計をしてSlackに通知しよう」といったライトな自動化をしていくことが辛く感じてしまうかもしれません。

でも実際はそんな心配をしなくて済むアプローチがあるので、今回はその節約術を紹介していきたいと思います。

定期実行タスクの節約術

Workatoには自動化処理の一部をモジュール化する「Callable Recipe」という機能があります。そしてこのCallable Recipeは課金対象に含まれないため、これを活用してメンテナンス性を保ちながら複数の定期実行タスクを1レシピにまとめていきます。

レシピの全体像は下図になります。

このレシピでは「祝祭日を除く平日の朝08:15にTrelloのToDoリストに通知する」「毎日00:30にGAの集計結果を通知する」の2つのタスクが設定されています。

処理の流れを分解すると以下になります。

  1. レシピは5分間隔で実行されます
  2. 実行された時間が「祝祭日を除く平日の朝08:15」かどうか判定します(ステップ2)
  3. 判定結果がTrueの場合は「TrelloのToDoリストを通知する」というCallable Recipeを実行します(ステップ3, 4)
  4. 実行された時間が「00:30」かどうか判定します(ステップ5)
  5. 判定結果がTrueの場合は「GAの集計結果を通知する」というCallable Recipeを実行します(ステップ6, 7)

ステップ2から4のパターンを下に連ねていくことで色々な定期実行を1レシピに集約することができます。

Schedule checkerコネクション

ステップ2, 5で時間判定に利用しているコネクションは弊社で作成したカスタムコネクタです。cronという古くから使われているスケジューリングプログラムを意識して作ってみました。このリンクからインストール可能です。

定期実行したい「月」「日」「時」「分」「曜日」を指定することで、その時間であるかどうかを判定できます。設定例を2つ載せてみます(cronの書き方を読んでみると習熟しやすいかもしれません)。

例1: 毎月1日 10:00

例2: 30分間隔

このステップの実行結果がontime?というデータピルに真偽値で渡されます。

Callable Recipeの呼び出し

Callable Recipeを呼び出すときには必ず“unsynchronous”を選択します。こうすることで呼び出したレシピの結果を待たずに後続の処理へ移るので、複数の処理が被った場合にも遅延なく呼び出されます。

おわりに

今回は定期実行タスクの処理を1レシピにまとめる節約術を書いてきました。

ひとつの自動化に値段がついてしまうとWorkatoで実装するハードルがあがってしまうかもしれませんが、こういった形をとると1レシピでの業務改善効果は無限大になります!

すでにWorkatoを導入してる方も、これから検討する方も、参考になると嬉しいです。

りょうたろう

クラウドネイティブでは副業としてNetskope, Okta, Workatoとかの検証をやってます。