どーも!

たかぽんです!

今回はZapierというサービスを先日知ったので、試しに使ってみようと思います...!

事前知識はほぼ0なんですが...w

ノリで試してみようと思います...!w

Zapierって何?

先日、会社でチラッとZapierというサービス名を聞き、どうやらslackへの通知とかをいい感じにできるらしい...ということを知りました。

筆者の場合、GASやらLambda、あるいはサーバーでcronにて定期実行とか特定イベント時に通知する...くらいしか思いつかないんですが...

どうやらコードなんて書かなくてもできるらしいではないですか...!

というわけで調べてみました。

Zapierは外国のサービスで、公式ページは以下です。

一番気になるのは料金です...!

最低限の機能と料金について確認しておきましょう...!

ざっくりと主要なところだけまとめると...

プラン名USD価格(円価格 *) / JPY表示価格Zapstask / month
Free$0 USD (0円) / 0円5 Zaps100
Starter$19.99 USD (約2,775円) / 2,998円20 Zaps750
Professional$49 USD (約6,802円) / 7,349円Unlimited2000
Team$399 USD (約55,389円) / 59,840円Unlimited50000
Company$599 USD (約110,917円)/ 119,829円Unlimited100000
*ドル円レートは2022/11/13 1:36時点の138.82円

こんな感じでした。

Zapというのは繰り返し行われる処理の単位っぽいです。

(例えば"GmailをSlackへ通知する一連の処理"など)

このZapを毎週繰り返し実行したり〜といったイメージですね。

また、taskというのが実行回数...と同義で大丈夫かと思います。

例えば週に1回zapを実行する...と設定した場合、月に4回程度taskが実行される形になります。

freeplanだと100回/月が上限なので、毎日一回実行するzapであれば3つ程度は回せそうですね...!

また、Startar以上ではこのtask数が可変になっており、追加料金を支払うことでtask数の上限を上げることができそうです。

料金は最低taskの場合の価格にはなっていますが、少し分かりづらく書いています...

実は料金ページの上部でJPYが選択でき、"ドル建てで表示されているドル*執筆時点での為替レートで算出した価格"と、"JPY選択時に表示される価格"で価格が異なっていました。(ので、どちらも記載している形です。)

ただ、表示価格と実際の計算価格で大きなズレが出ていますが、下記画像内に注意が記載されています。

以下のようにありますね。

Actual price may vary based on the exchange rate in place between USD and JPY at the time of payment processing or invoicing. Prices exclude all taxes, levies and duties.

雑に訳すと...

実際の価格は請求時、もしくは支払い時のUSD/JPYの為替レートに応じた価格になる可能性があります。また、表示価格は税金等は除いた価格になります。

こんな感じでしょうか。

なので、実際に有料プランを検討する際はその時点での為替レートを確認するのが良さそうです。

さて、ではそんなzapier早速触ってみます...!

Zapierでdiscordへの投稿をslackへ投稿してみる

では早速試してみます...!

最初は登録をしていきます。

お仕事何してるの〜?っていうのと企業規模どんくらい?っていう感じでした。

次は普段どんなアプリケーションを使いますか?という質問ですね。

後述するzapのテンプレート的なものを推薦するために使われる情報です。

筆者は画像にある通り、Slack, GoogleCalendar, Notion, WordPress, Discordを設定してみました。

上記まで終えると、以下のようなダッシュボード画面が表示される様になります。

なるほど...

ここに表示されているRecommended for you でZapの基本形(例えばSave new gmail attachments to Google Drive)の設定を作ることができると...

今回はGmailを飛ばしたらslackに通知してみるくらいを試してみようと思います。

上記のテンプレートを使ってもいいのですが、パッとみた感じ直感的に操作できそうだったので、今回は0から作っていこうと思います。

事前準備

事前に、discordとslackにてテスト用のチャンネルを作成しておきます。

今回筆者は# zapier(discord)と# zapier-test(slack)としておきました。

最終イメージとしてはdiscordのzapierチャンネルへ何かしらが投稿されると、そのメッセージをzapier-testに投稿してくれる形です。

では次から早速Zapを作っていきましょう...!

Discord側の設定の作成

画面左上あたりにあるオレンジの"Create Zap"からワークフローを新規作成していきます。

クリックすると、以下の様なzapの設定画面が出てきます。

Triggerというのが、このワークフローを開始する条件になるのですが、今回はdiscordの投稿をslackへ投稿するので、"特定のdiscordチャンネルへの投稿"をトリガーとしていきます。

そのため、discordを選択。

サービスを選択した後、より具体的なEventの指定をします。

これが、投稿された時なのか?新規ユーザーが登録された時なのか?といったサービスごとのイベントを指定する場所になります。

今回は新規の投稿があった場合...にしようとおもうので、newで検索して"new message Posted to Channel"を選択します。

Continueを選択すると...

今度はDiscoerのアカウントを選択します。

どのアカウントのワークスペースに対して操作をしていくか?ですね。

筆者は一度ログインしてしまっているのでSearchにひっかかりますが、初回の場合は別途認証が必要になるかと思います。

Discordでログインが必要なので、ログインして認証をします。

それなりに有名なサービスなので、変なことはされないと思いますが、念の為認証内容の確認はしっかりと理解した上で利用しておきましょう。

アカウントを選択したら、こんどはチャンネルです。

筆者は先程zapierというチャンネルを作成していたのでそれを選択します。

そしてそのままContinueを。

最後にテストができます。

ここで行っているテストですが、すでにそのチャンネルに投稿されているメッセージを取得することができるかどうか?を確認している様です。

そのため、あらかじめ”こんにちわ"というメッセージを投稿した状態で上記の"Test trigger"を実行すると...

この様な形でデータが取得できていることが確認できます。

あくまでこのzapier側でメッセージを取得しただけなので、この時点ではdiscordやslackチャンネルへの変化はでない点はご留意ください...!

これでdiscordの設定はOKです...!

では、次にSlackの準備をしていきます...!

Slackへ投稿する設定の作成

さて、今度はSlackです....!

先ほどのdiscordの設定の最後の部分にcloseとあるので、そちらをクリックしてdiscordの設定部分のトグルを閉じておきます。

そうすると、とってもみやすくなります...!

今回は2. Actionに設定する内容が"Slackへ投稿する"といった具合です。

ではやっていきましょう...!

といっても、大部分は先ほどのdiscordと同じなので、説明は少なめでいきます...!

まずはサービスの選択とイベントの選択です。

今回はチャンネルへメッセージを送る...というのをしたいので、"Send Channel Message"を選択します。

次にslackのアカウントの選択。

そして、次がactionの内容ですが、ここが少し複雑になっているので、少しだけ詳しくみておきます。

最初がChannelですね。今回はzapier-testチャンネルをslackに作っているのでそれを選択しました。

また、Message Textでは先程テストをした場合、discordのメッセージのどの部分(メッセージ本文やタイムスタンプなど...)をその投稿に混ぜるか?といったことを指定できます。

今回は簡単にContent+Timestampで設定してみました。

また、次がSend as a botというのが、Botとしてその投稿を投稿させるか、認証の際にログインしたアカウントのユーザーとして投稿をするか選択ができる形です。

基本的にはBotで良いかと思いますので、Yesで良いと思います..!

そして、BotNameが実際の投稿時のユーザー名ですね。

ここまで設定しておけば最低限はOKなはずです。

他にもこのZapの設定画面へのリンクを投稿につけておく?とか、アイコンの設定とか...

細かい設定がいくつかあるので興味があるかたは試してみてください...!

一通り設定がおわったら、continueを...!

最終確認がでるので、確認して問題なさそうならテストしてみます。

テストでは、先程discordですでに投稿されているメッセージを取得したと思いますが、その内容をslackへ投稿します。

実際にTest actionを実行すると...?

届きました...!

これでslackの設定も完了です...!

そして、slackも完了したため、Discordの投稿が行われた時(=trigger)に、Slackへその投稿内容を投稿する(=action)Zapが完成しました...!

テストを実行したら、画面下部にこんな感じでPublishのボタンが出てくるのでPublishしましょう..!

うまくいけば以下の様な画面が出てきます...!

ここまでできたら最後にDiscordへ投稿して動作確認をしてみましょう...!

discordへ投稿した文章が上記です。

そして...それに対するZapierのSlackへの投稿が以下になります。

最後にZapierを使ってみて、少し気になった点等も上げていこうと思います。

Zapierを使うときの留意点

さて、ざっくりとZapierを使ってみました...!

ただ、使っていて気になった点がいくつかありました。

実は最初は特定のGmailが飛んできたらSlackへ通知をする...といった形で本記事を書き始めたのですが...

テストまではちゃんと動いたっぽいけど、最後のパブリッシュのタイミングでどうやら対応していないため、Gmailはサポートしてへんで...!と...

詳細はこちらにあります。

Starting May 26, 2019, users with a consumer Gmail account - which end in @gmail.com or @googlemail.com - will have limitations on which apps they can send Gmail information to, in compliance with Google's new security protocols

冒頭部分ですが、簡単に説明するとグーグルのセキュリティとして、個人のアカウントだと、Gmailのアドレスが@gmail.com や@googleemail.comの場合、送り先に指定できるappに制限がある...といった形です。

そのため、slackへは個人アカウントでは送れなさそうでした。

ただし、企業アカウントなどだと上記には値しない場合もあると思うので、前述以外の@mywebsite.com といった形であれば、問題ないようです。

リンク先に個人アカウントでも設定できるappのリストもあるので、その点は注意が必要です。

また、別件で...

さきほどの最終動作確認のスクリーンショットを見てもらえればわかるかと思いますが、リアルタイム性はあまりなさそうでした。(無料プランだからかもですが...)

そこで、短い時間さで複数のメッセージを送ってみたのですが...

左側がDiscordのチャット欄、右側がSlackのチャット欄で、実際にチャットした順序とは異なる順でメッセージが飛んできていました...orz

裏側でどの様な処理がなされているのかは計り知れないですが...割と頻繁にメッセージのやり取りが行われ、前後の順序が大切になるケースだとちょっと検討の余地がありそうです...。

余談

最後に余談にはなりますが、そもそも定期実行とかの需要の方が高そうだなぁ...とおもったので、上記試した後軽くみてみたんですができそうですね...!

Trigger部分に"Schedule by Zapier"というものが選択でき、これがまさにそれっぽいです...!

Eventとして毎日、毎時、毎月、毎週...といったことが選択できるようです。

さらに...

以下の様に週末も通知する?とか、時間の指定もできるっぽいです...!

これは...神かもしれない...w

ちなみにScheduler周りの説明は以下あたりにありそうでした。

また、上記の記事先でも説明されていますが、不定期の間隔で実行したい場合は代わりにGoogle Calendarのイベントを代用して、calendarの日程で不定期のイベント時刻をそれぞれ設定して、その開始時刻をTriggerにするイメージだと思います。(Tips参照)

ある程度のサービスで定期実行を軽くしたい場合なんかは本当に便利そう...

これから無料の範囲で積極的に使っていこうと思います...w

おすすめの記事