どうもばるすです。
ちょこちょこWorkatoの検証とかやってます。
Workatoって何ー?って方は、こちらのブログをご参照ください(ステマ)
Workatoにはたくさんの接続先アプリがあって、色々とできるんですよ。
Appには標準アクションがあるんですけど、Workatoが準備してないアクションについてはカスタムで対応できます。
ってことで今日はアクションについて書きます。
そもそもアクションって何?
Workatoさんの公式ドキュメントを貼っておきます。
https://docs.workato.com/recipes/actions.html#update
ざっくり平たく書くと、どんなシステムで、何をしたいのか?を指定するのがアクションです。
標準アクション
Workatoが標準で用意してくれているアクションです。
Slackなら
- UserをEmailで検索する
- チャンネルに投稿する
- チャンネルをarchiveする
- チャンネルを作成する
などがあります。

カスタムアクション
標準アクションでできなければ、APIを使って任意のアクションを実行します。
例:GoogleSheetsの標準アクション
行を追加する

複数行を追加する

行を検索する

行を更新する

GoogleSheetsのカスタムアクション
カスタムアクションの設定欄はこうなってます。

GoogleSheetsのAPIを実行するので、基本的な仕様はGoogleAPI通りです。
APIがあれば全部できます。そう、APIさえあれば。
実際にカスタムしてみた
百聞は一見に如かずってことで、
Googleスプレッドシート(GoogleSheet)を新規作成してSlackに通知する機能を作ってみました。
レシピ全体図(完成形)
今回作成するレシピの完成形はこんな感じです。

サンプルレシピ作成までの道のり
- 必要なコネクションを作成する
- レシピを作成する
- レシピでAppアクションを配置して設定
- 完了
それではやっていきましょう。
1. 必要なコネクションを作成する
Slackは以前に作成したのでGoogleSheetsのみ作成します。
Tools → App Connections → Create a new connection の順にクリック

Application:Google Sheets を選択。
Connection name:名前を入力。

Connectをクリックするとアカウント確認画面へ遷移するので許可します。

2. レシピを作成する
Recipe → NewRecipe→ 適当に名前入れてBuild Callable recipeをクリック
パラメータ設定できますが、今回は何も設定しません。
3. レシピでAppアクションを配置して設定
GoogleSheets
GoogleSheetsを追加してCustom Action をクリックします。

Connection → 作成したConnectionを選択します。

Setup → それぞれ値を入力します。
- Action name:適当でOK。
- Method:使うAPIに従う。今回はCreateを使うのでPOSTを選択。
- Path : 使うAPIに従う。今回はCreateを使うので[spreadsheets]を指定。
- ResponseBody:Use Jsonをクリック → リファレンスやサンプルからレスポンスJsonを貼り付ければOK。

参考リンク:GoogleSheetsAPI Method: spreadsheets.create
Slack
Slackを追加してPostMessageを選択、投稿先と内容を設定します。

画面右上からSaveしてExitをクリック
4. 動かしてみる
前回作成したAPIに追加してテストで呼んでみました



まとめ
カスタムアクションと呼ばれていますが、API叩くだけなのでカスタムは簡単です。
APIがあれば全部叩ける&リファレンス通りにやればコード書くより遥かに楽でメンテナンスしやすくって最高です。
ちなみに、このレシピ作るためにかかった時間は25分くらいです。
ブログ書く時間のほうが遥かに手間暇かかりました…
おわりに
今回はカスタムアクションって何?について記載しました。
今後もWorkatoについてbarusu目線で記事書いていきますんでよろしくです。
以上、ありがとうございました。