🤖

AI活用ガイド Zapierでカスタムアクションを効率的に作成する方法

2024/07/31に公開

はじめに

2024年7月時点でまだβ機能ですが、Zapierにはアプリに対して独自のアクションを定義できる Request Action および Custom Action という機能があります。
特に、Custom ActionはAI(Copilot)と対話しながら簡単な操作で柔軟な独自アクションが定義できることから、さまざまなシーンでZapierを使った自動化が適用できるようになります。
以下ではNotionをサンプルにして、その特徴や設定の流れをまとめます。

従来のアプリAPI呼び出しの課題

たとえば Zapier から Notion に対してアクションを設定する際、標準で用意されているのは以下の7つだけです。

  • Create Database Item
  • Create Page
  • Retrieve a Page
  • Retrieve Database
  • Update Database Item
  • Find Database Item
  • Find Page (By Title)

例えば条件に合致するDatabase Itemを複数取得したいといった場合、これまではWebhookかCode by ZapierでNotionのAPIを直接呼び出す必要がありました。

API呼び出しに慣れている場合、処理自体はそこまで複雑ではありませんが、

  1. Notion Integrationを追加する必要がある。追加は管理者しか実施ができない
  2. Notion Integrationで払い出したAPIトークンをテキストで保持する必要がある

この2点がネックになります。
これから紹介するRequest ActionやCustom Actionを使うことで、これらの課題を解消することができます

Request Action

はじめにRequest Actionを使ってNotionのDatabaseから未完了アイテムを取得してみます。

  1. 取得対象となるNotionのDatabaseのコネクト→接続先 でZapierを追加します。もしまだ一度もZapierからNotionのアクションを呼び出していない場合は一度Zapier側でコネクションを設定してください。
  2. 続いてZapierでNotionのActionから API Request(Beta) を選択します。
  3. Actionに以下を設定します。
  1. ActionのBodyにはステータスが未完了のアイテム取得のため以下のように指定します。条件を変更したい場合、詳細はNotionのドキュメント を参照ください。
{
  "filter" : {
    "property": "ステータス",
    "status": {
      "does_not_equals": "完了"
    }
  }
}

これで準備ができました。通常NotionAPIを呼び出す際に必要なAuthentication headerはZapierが自動で設定してくれます。
ActionをTestして設定に問題がなければResponse Status200で条件に合致する複数のDatabaseItemが取得できます。

Custom Action

Request Actionによって、Notion Integrationを追加することなく、安全にNotionのAPIを呼び出すことができました。
Custom Actionではさらにそのアクションを組織内に公開して複数人で共有・実行することができるようになります。

  1. Request Actionと同様、対象Databaseに対してコネクトでZapierを追加しておく必要があります。
  2. ZapierのNotionActionからEventでは Create action を選択します。
  3. ここからはCopilotと作っていきます。現状Zapier上で日本語を入力する際、文字変換を確定するReturnでSubmitされてしまうため、若干癖が強いですが以下のメッセージを送ります。
Notionのデータベースアイテムを取得したい。その際に対象のデータベースIDや取得条件となるステータスプロパティは引数で指定したい。
  1. Copilotが質問してくるので対話しながら構成していきます。

  2. しばらく待つとコードが生成されます。
  3. 生成されたら早速テストしてみましょう。コネクションと必要なパラメタを指定して Run Testを実行します。初回テストでは以下の通りにErrorになりました。
  4. 原因はドリルダウンして確認することができますが、どうやらStatusというプロパティIDがないためエラーになっているようです。このあたりは日本語環境ではプロンプトと実際のコード、Notion側の環境設定とで不一致は起きやすいため注意が必要ですね。
  5. では早速修正していきます。画面左側のAdvancedタブをクリックします。
  6. ここには実際に実行されているコードがあります。この中にあるfilter設定を以下のように修正します。
const filter = {
  or: statusArray.map(status => ({
    property: "ステータス",
      status: {
        equals: status
      }
    }
  ))
};
  1. 修正後右側ペインにある Re-Run Test を実行します。
  2. 設定が正しければ以下のようにAPIが正常終了します。
  3. 組織内で複数名で利用可能とする場合には、テスト後に右側ペインで Publish をすれば他のチームメンバーも呼び出すことができるようになります。

まとめ

単発利用のRequest Actionに対して、Custom Actionでは再利用可能なアクションをAI(Copilot)と一緒に壁打ちしながら作成できる点が特徴的です。
また、処理はコードで実現できそれらも自由に変更できることから、より柔軟なアクションの実現が可能になります。
実際、上記サンプルでも Request Actionでは 完了以外のステータス という固定条件だったものが、Custom Actionでは ステータスをカンマ区切りで複数指定 というより柔軟なアクションとして定義ができました。
加えて、エラー時のトラブルシュートの流れも整理されていて、開発者体験もGoodです。

ただし、現時点では日本語入力やプロンプトの解釈といった部分で意図しない挙動をする場面があるため、今後の改善に期待したいとことです。

以上、AIを活用したZapierのカスタムアクションの設定手順の紹介でした、参考になれば幸いです!

参考

https://help.zapier.com/hc/en-us/articles/12899473501453-API-Request-actions-in-Zapier
https://help.zapier.com/hc/en-us/articles/16277139110157-Create-a-custom-action

株式会社ナレッジワーク

Discussion