Zapier に関する投稿を表示しています

Zapier を使ってあと読む君をつくる

Slack 流量が多いとすぐ流れちゃうので、いまは置いておいて後で見よう!とか、メモ用途に別のチャンネルに転送する、みたいなことを簡単にやりたい。
それ Zapier でできる。

トリガー: Slack: New Reaction Added

リアクションがついたら、をトリガーにできる。
:atodeyomu: とか作るなどして、わかりやすい何かに設定しておくとよい

User の指定をしないと誰かがリアクションつけたら飛ぶ、になってしまうので注意が必要。
みんなで情報集めよう!みたいにするなら、もっとわかりやすい名前のリアクションにしたほうがよい。

ステップ: Slack > Send Channel Message

これで別のチャンネルに、トリガーで拾った発言の URL を送信できる。

おまけ: リマインダ機能

上記のタスクへさらに設定する。

  • ステップ: Storage > Push Value Onto List
    • 任意の名前で良い

以下のような別のタスクを作る

  • トリガー: Schedule > Every Day
  • ステップ: Storage > Get List Values
    • New Reaction Added したときに追加する Storage と同じもの
  • ステップ: Filter > Only Continue If...
    • Get List Values が空っぽではないかチェック
  • ステップ: Storage > Remove Value
    • Storage を空っぽにする
  • ステップ: Slack > Send Channel Message
    • Get List Values で取得した内容を送信

すると、毎日好きな時間に、それまでに溜められたリアクションのついた発言をリマインドできる。

こんな感じ。

スレッドでも bot でも、どんな発言でも拾える。

Zapier を使って JIRA のチケットを通知する

JIRA のチケットで動いていることもあって、今日やること = JIRA を見ればわかる状態になっているので
毎日確認できるようにリマインドしたらいいなあと思ってやってみている。

Zapier

Zapier | The easiest way to automate your work

IFTTT みたいなやつ IFTTT を使ったことないので何が違うかはわからない。
何かをトリガーにして、何かをやることができる。
やることを複数のステップにして、条件チェックしたりもできる。
cron のように、定期実行することもできる。
(無課金だとその恩恵が揃っていないみたい)

Zapier を使って JIRA のチケットを通知するくんを作る

トリガー: Schedule > Everyday

毎日実行するだけ。
時間は朝とかお昼くらいがおすすめ。

Zapier のプロフィールからタイムゾーンを設定してないと、ずれた時間にくることに注意。

ステップ 1: Webhook > GET

リクエスト先は自分たちの JIRA の API

https://XXXXX.atlassian.net/rest/api/v2/search

パラメータとしてこんなものを設定する。

// パラメータ名
jql

// パラメータ値
updated >= -4w AND (assignee = currentUser() OR reporter = currentUser() OR comment ~ currentUser() OR text ~ currentUser() OR watcher = currentUser() OR voter = currentUser() OR creator = currentUser()) ORDER BY updated DESC, status DESC, lastViewed DESC
// Basic Auth
{{ログインメールアドレス}}|{{トークン}}

JQL と言われる JIRA 上でチケットを探すためのクエリを使い、あらゆる箇所に自分が含まれているかを探すような記載をしている。加えて、最終更新が 4 週間以内のものに絞っているので、古いものは出てこない。

詳しい開設はコッチ。
高度な検索 - アトラシアン製品ドキュメント

Basic Auth は JIRA からアクセストークンを発行して、メールアドレス|アクセストークンの形で記載する。
ここからできる。
https://id.atlassian.com/profile/profile.action

ステップ 2: Code > Run by Javascript

JSON で返ってきたデータをそのままだと Slack にまとめてウマいこと送ることが出来ないので、スクリプトで頑張る。

// Input Data
// 以下の変数に同様の名前のJIRAからのレスポンスをマッピングする
issue_summary
issue_status_name
issue_key
let text = [];
const issue_summary = inputData.issue_summary.split(',');
const issue_status_name = inputData.issue_status_name.split(',');
const issue_key = inputData.issue_key.split(',');

for (let i = 0, m = issue_summary.length; i < m; i++) {
  text.push(`[${issue_status_name[i]}] ${issue_summary[i]} https://XXXXX.atlassian.net/browse/${issue_key[i]}`);
}

output = [{text: text.join('\n')}];

Zapier と、ここの split の都合によって、JIRA チケット名に「,」が入っているとうまく表示されないので注意が必要。
とって来た値でうまく回させてくれ!

ステップ 3: Slack > Send channel message

あとは整形されたチケット一覧を Slack に送るだけ。

出力結果

最終的にこのように表示される。

全面モザイクで申し訳なさあるけど見せられないんや…スマン…