はじめに
説明
Make という自動化ツールを使って、Notion で作成している Task を Slack に通知させる仕組みについて解説しています。
- 今日のタスク通知
- 今日を相対的に見て、まだ未完了のタスク通知
この2つの通知を自動で Slack に行えるようにしています。
又、条件分岐(router)の設定もしていますので、
今日はタスクがない場合 → 今日のタスクはありません!是非、ゆっくりとして下さい。と通知され、
現在未完了のタスクがない場合 → 今日の時点ですでに期限を過ぎて未完了のタスクはありません!素晴らしいです。と通知されます。
【前提】make について
Make は、上記で記載した通り自動化をする為のツールです。
自動化ツールで有名なものは、zapier でしょうか。
zapier も良いのですが、無料プランの幅が狭いので今回は採用を見送りました。
ちなみに、Make は以前は Integromat という名前でした。その為、何か調べものをする際は Integromat の名前を使う方が良いかもしれません。
又、Make の無料プランの範囲内について記載しておきます。(最新の情報は公式サイトをご覧下さいね)
言葉でも説明すると、1か月あたり1000回のオペレーションだと無料でそれ以上使いたいよ。って場合は有償みたいです。
今回、私は2つの自動化(シナリオと言います)を作成しますが、単なるタスクを Slack に通知するというお話なので毎日30個40個50個とかなければ基本的には問題ないと思います。
仮に超えた場合でも、AWS のようにアカウント作成時にクレジットカードを登録するわけでもないですから、翌月まで使えなくなるだけかと思います。
その場合は、翌月まで待つか有償プランに切り替えるか、ご検討下さい。
費用
- 無料
前提
- Notion のアカウントを作成している事
- Task 管理のデータベースを作成している事
- Task を通知する Slack のチャンネルを作成している事
【事前情報】今回使用するタスク管理データベースについて
今回使用するデータベースは以下になります。
最低限必要なものとして、
- Task の名前を書いている事
- Checkbox 機能を備えている事
の2点です。
又、今回 Make と Notion を連携するにあたり、Database ID というものが必要になります。
取得方法は下記です。
- 対象のデータベースをフルページで開く。(インラインの状態ではなくフルページなのでご注意下さい)
- share(共有)
- copy link をクリック
そうすると、例えば「https: //www.notion.so/user_name/caff77c61448d5bbb868b92875b280e6?v=f3d15411a058421683944e658c0b52b2&pvs=4」というリンクが取得出来ます。
このリンクで実際に必要となるのは、上記で言うと「caff77c61448d5bbb868b92875b280e6」までです。(?の手前まで)
この Database ID は、後から何度か使いますので控えておいて下さい。
下記で画像でも解説してますので、上記で分かりにくかったという方はご参照下さい。
手順
1. make のアカウント登録
1.1 make のアカウントを作る必要がありますので、公式サイトへアクセスし「Get started free」をクリックします。その後、Sign up に必要な情報を入力し「Sign up for FREE」をクリックすると、「Check your email」というメッセージが表示されます。
1.2 以下のように make からメールが届いてます。「verify email」をクリックしてメールアドレスの認証を行います。認証が出来たら「successfully verified」とメッセージが表示されますので、Sign up 時に決めた email address と password を入力しログインして下さい。
1.3 ここでは、4つの質問がありますので当てはまりそうなものを入れていきます。
ざっくりと聞かれている内容は
- あなたは何をしている人ですか(役割はなんですか)
- このサービスを使って、何を自動化したいのですか、目標はなんですか。
- 自動化の経験ってありますか。
- 会社の規模(人数)ってどれくらいですか
という感じです。英語が分からない & chrome 使っている、という方は右クリックして「日本語に翻訳」などもありますので利用してみて下さい。
4つ回答を入れたら、「Get Started」をクリックします。
1.4 make の Dashboard 画面が表示されれば「1. make のアカウント登録」は完了です。早速、自動化の為に仕組みを作っていきます。(これをシナリオと言います)
「Create a new scenario」をクリックしたら、【2.【シナリオ作成】今日のタスクを Slack に通知させたい場合】へ進んで下さい。
2.【シナリオ作成】今日のタスクを Slack に通知させたい場合
2.1 シナリオ作成の画面へ転移しますので、これから自動化の仕組みを作っていきます。「+」ボタンをクリックすると連携出来るアプリが表示されますので、Search application から「Notion」と検索し、アプリをクリックして下さい。
2.2 様々な連携方法が表示されます。今回は Database の情報を拾いたいので、「Search Objects」をクリックします。
2.3 Notion のロゴが表示されます。(これをモジュールと言います)処理の塊、設定、のようなものです。
次は Notion と連携させますので「Create a connection」をクリックし、Connection type は “Public” を、Connection name は、”好きな名前” を入力して下さい。
2つとも入力したら「save」です。
2.4 Make にページのアクセス権を付与します。任意のページにチェックを入れて、「アクセスを許可する」をクリックします。
2.5 Make の画面に戻ってきます。Connection に先程決めた名前とワークスペースの名前が表示されている事を確認して下さい。
2.6 続いてモジュールの設定をしていきます。「【事前情報】今回使用するタスク管理データベースについて」で取得した Database ID を貼り付けて、数秒待つと「Filter」という項目が出てきます。以下のように設定して下さい。設定したら「OK」をクリックして下さい。
- Data(Data)
- Text: Equals
- {{formatDate(now; "YYYY-MM-DD")}}
{{formatDate(now; "YYYY-MM-DD")}} の部分について補足です。
まずは以下の画像のように、「formatDate」を選んで下さい。そうするとボックス内に反映しますので、カーソルを「( 」の右側までもっていき、「now」と書いているボタンをクリックして下さい。最初、手入力で入力したのですが上手くいかなかったので、ここは new ボタンをクリックするようにして下さい。その後、カーソルを「 )」の左側までもっていき、「YYYY-MM-DD」と入力します。その結果が3枚目の画像になりますので、ご自分の状況と相違がないか確認して下さい。
2.7 モジュールの近くにカーソルを持っていくと、「Add another module」と出てきます。こちらをクリックし、次は「Tools」というモジュールをクリックします。
このモジュールは、テキストを1つにまとめる事が出来ます。まとめないと、Slack の場合別々のメッセージとなり非常に扱いずらいです。どうせなら1つのテキストブロックにまとめたいので、こちらを使用します。
2.8 「Text aggregator」をクリックし、「Show advanced settings」をクリックして高度な設定画面を開きます。「Row separator」を「New row」にした方が見やすいので変更しておきます。
次に、「Text」と書いたボックスをクリックします。「【事前情報】今回使用するタスク管理データベースについて」でお見せしている通り、「Task Name」と書いているカラム名にタスクのタイトルを書いています。Slack 通知する際、そのタイトル名を引っ張った方が何のタスクなのか分かりやすいので、「Task Name [] のトグルの中にある Plain Text」という箇所を選択します。(自分のタスクデータベースと違うよって場合は適宜置き換えて下さい)
そこまで出来たら、「OK」をクリックです。
2.9 次は Slack のモジュールを追加します。先程 Tools を追加した時と同じように「Add another module」をクリックして、「Slack」と検索、その後「Create a Message」を選択して下さい。
2.1.0 ここでの設定箇所は主に以下です。設定が終わりましたら「OK」をクリックして下さい。
- Enter a channel ID or name:Select from the list を選択
- Channel type:Public Channel を選択
- Public Channel:通知先のチャンネル名を選択
- Text:メッセージを入力(例:今日のタスクはこちらです!など)
- Icon emoji:Slack の絵文字を挿入できる部分になります!( Show advanced settings ボタンを押すと出てきます )
- User name:Bot の名前を決める部分です!( Show advanced settings ボタンを押すと出てきます )
Text の部分について補足です。
実際には、
今日のタスクはこちらです!
`(バッククォート×3つ)
`(バッククォート×3つ)
と記載しています。
この「```」で挟むと Slack 通知される際、コードブロックになるので、あえて書いてますが、必要ないよって方はなくても大丈夫です。
2.1.1 以上で設定が終わりです。ここまでの設定を保存しておきます。モジュールの下に「save」ボタンがあるので忘れずにクリックして保存をしておきましょう。
今回の処理の流れとしては、Notion モジュールで Database から値を取ってきて、Tools モジュールで1つのブロックに整形して、Slack モジュールで指定したチャンネルに通知をする。といった感じです。
「Run once」をクリックして、正常に処理が走るか( Slack に通知が来るか)試してみます。
本日(2023/07/25)時点のタスクは画像の通り3つあります。3つともSlack に飛べば正常です。
2.1.2 問題なく Slack にメッセージが来ましたので成功です。後は最後の微修正をしたいので、先程の画面に戻ります。
2.1.3 このままでも機能的には問題ありませんが、修正した方が良い点が3点あります。
1点目:どういった処理なのか一目で分かりにくい → モジュールに名前を付けて分かりやすくします。
2点目:Task がない場合も、「本日のタスクはこちらです!」と表示される → 条件分岐のモジュール(router)を追加して、タスクがない場合は「今日はタスクはありません。」とメッセージされるようにしようと思います。
3点目:通知のタイミングがデフォルトの「15min ずつ」となっているので多すぎる → 毎朝 9:00 にしようと思います。
2.1.4 モジュールに名前を付ける場合は、モジュール本体にカーソルを持っていき右クリック → Rename で可能です。分かりやすい名前にしましょう。
2.1.5 次は条件分岐のモジュール(router)を追加します。現状だとタスクがない日も「今日のタスクはこちらです!」とだけメッセージが来ます。
ここを、「今日のタスクはありません!是非、ゆっくりとして下さい」と表示させたいです。
モジュールの下に、緑色の歯車(設定)マークがありますので、そこをクリックして「router」をクリックします。
2.1.6 まずは、現在「Tools」と「Slack」で結合されていますので、これを解除します。右クリックして「Unlink」で可能です。その後、router を Tools に、Slack を router に紐付けます。各モジュールを長押しし、目的のモジュールに近づけると自動でくっつきます。
2.1.7 その後、Slack のモジュールを複製したいので、右クリックして「Clone」をクリックします。
2.1.8 複製した方のモジュールで変更したい場所は、「Text」のメッセージです。
「今日のタスクはこちらです!」から「今日のタスクはありません!是非、ゆっくりとして下さい」へ変えましょう。
変更したら「OK」で大丈夫です。
補足
「今日のタスクはありません!是非、ゆっくりとして下さい」の後ろについている、「:four_leaf_clover(:)」という文字ですが、これは Slack 上で使える絵文字です。
もちろんつけなくても全く問題ありませんが、何となく絵文字つけたかったので記載しました。
ちなみに四つ葉の絵文字が出ます。🍀
実際に上記の文字を利用する場合は、~~~ clover(:)の()は外して下さい。
2.1.9 続いて、フィルターの設定をしていきます。まずは上側の Slack モジュールと Tools モジュールの間にある「●●●●●」の部分を右クリックして「Set up a Filtar」を選択したら以下の様に選択して下さい。選択したら「OK」をクリックです。
- Condition:Text を選択
- Basic operators:Exists を選択
2.2.0 次にもう一つの方(下側)のフィルターを設定します。先程と同じく「●●●●●」の部分を右クリックして「Set up a Filtar」を選択したら以下の様に選択して下さい。選択後「OK」をクリックしたら router の設定は終わりです。
-
Condition:Text を選択
-
Condition:Text を選択
-
Basic operators:Does not exists を選択
2.2.1 次に、1日1回、毎朝指定した時間に通知する場合は、「Every 15 minutes」をクリックし、Run scenario を「Every day」に、Time を「09:00」にすればOKです。
2.2.2 上記の修正点3つが終わった結果が、以下のようになります。
【余談】
色々いじっている方は気づいた方もいるかもしれませんが、モジュールを左クリックし続けた状態で動かせば、モジュールも自由に動きます。又、マウスのカーソルを上下に動かせば全体の拡大縮小も出来ます。
2.2.3 もう一度「Run once」をクリックして、正常に処理が走るか( Slack に通知が来るか)試してみます。
タスクがある時は以下のように表示され、
タスクがない時は以下のように表示されるはずです。
3.【シナリオ作成】今日時点でまだ未完了のタスクがあるかないか判断し Slack に通知させたい場合
3.1 「+」ボタンをクリックすると連携出来るアプリが表示されますので、Search application から「Notion」と検索し、アプリをクリックして下さい。
3.2 様々な連携方法が表示されます。今回は Database の情報を拾いたいので、「Search Objects」をクリックします。
3.3 Notion のロゴが表示されます。(これをモジュールと言います)処理の塊、設定、のようなものです。
次は Notion と連携させますので「Create a connection」をクリックし、Connection type は “Public” を、Connection name は、”好きな名前” を入力して下さい。
2つとも入力したら「save」です。
3.4 Make にページのアクセス権を付与します。任意のページにチェックを入れて、「アクセスを許可する」をクリックします。
3.5 Make の画面に戻ってきます。Connection に先程決めた名前とワークスペースの名前が表示されている事を確認して下さい。
3.6 続いてモジュールの設定をしていきます。「【事前情報】今回使用するタスク管理データベースについて」で取得した Database ID を貼り付けて、数秒待つと「Filter」という項目が出てきます。以下のように設定して下さい。設定後2個目のフィルターを設定しますので、「Add AND rule」をクリックして下さい。
- Checkbox(Checkbox)
- Text: Does not equal
- true
もう一つのフィルターには以下のように設定して下さい。設定したら「OK」をクリックして下さい。
- Data(Data)
- Text: Before
- {{formatDate(now; "YYYY-MM-DD")}}
{{formatDate(now; "YYYY-MM-DD")}} の部分について補足です。
まずは1枚目の画像のように、「formatDate」を選んで下さい。そうするとボックス内に反映しますので、カーソルを「( 」の右側までもっていき、「now」と書いているボタンをクリックして下さい。最初、手入力で入力したのですが上手くいかなかったので、ここは new ボタンをクリックするようにして下さい。その後、カーソルを「 )」の左側までもっていき、「YYYY-MM-DD」と入力します。その結果が3枚目の画像になりますので、ご自分の状況と相違がないか確認して下さい。
3.7 モジュールの近くにカーソルを持っていくと、「Add another module」と出てきます。こちらをクリックし、次は「Tools」というモジュールをクリックします。
このモジュールは、テキストを1つにまとめる事が出来ます。まとめないと、Slack の場合別々のメッセージとなり非常に扱いずらいです。どうせなら1つのテキストブロックにまとめたいので、こちらを使用します。
3.8 Text aggregator」をクリックし、「Show advanced settings」をクリックして高度な設定画面を開きます。「Row separator」を「New row」にした方が見やすいので変更しておきます。
次に、「Text」と書いたボックスをクリックします。「【事前情報】今回使用するタスク管理データベースについて」でお見せしている通り、「Task Name」と書いているカラム名にタスクのタイトルを書いています。Slack 通知する際、そのタイトル名を引っ張った方が何のタスクなのか分かりやすいので、「Task Name [] のトグルの中にある Plain Text」という箇所を選択します。(自分のタスクデータベースと違うよって場合は適宜置き換えて下さい)
3.9 次は条件分岐のモジュール(router)を追加します。「Tools」モジュールの近くにカーソルを持っていくと、「Add another module」と出てきますのでクリック。その後「router」というモジュールを追加して下さい。
3.1.0 次は Slack のモジュールを追加します。先程 router を追加した時と同じように「Add another module」をクリックして、「Slack」と検索、その後「Create a Message」を選択して下さい。
3.1.1 ここでの設定箇所は主に以下です。設定が終わりましたら「OK」をクリックして下さい。
- Enter a channel ID or name:Select from the list を選択
- Channel type:Public Channel を選択
- Public Channel:通知先のチャンネル名を選択
- Text:メッセージを入力(例:今日のタスクはこちらです!など)
- Icon emoji:Slack の絵文字を挿入できる部分になります!( Show advanced settings ボタンを押すと出てきます )
- User name:Bot の名前を決める部分です!( Show advanced settings ボタンを押すと出てきます )
Text の部分について補足です。
実際には、
今日時点でまだ未完了のタスクはこちらです!
`(バッククォート×3つ)
`(バッククォート×3つ)
と記載しています。
この「```」で挟むと Slack 通知される際、コードブロックになるので、あえて書いてますが、必要ないよって方はなくても大丈夫です。
3.1.2 1つ目のモジュールの設定が終わりました。次は、タスクがないバージョンのモジュールを作成する必要があります。先程設定した Slack のモジュールを複製して一部だけ変更しましょう。Slack モジュールを右クリックして「clone」をクリックするとクローンが出来ます。複製した Slack モジュールを左クリック長押しにして、router モジュールの近くまで持っていくと接続されます。
3.1.3 複製した方のモジュールで変更したい場所は、「Text」のメッセージです。
「今日時点でまだ未完了のタスクはこちらです!」から「今日の時点ですでに期限を過ぎて未完了のタスクはありません!素晴らしいです」へ変えましょう。
補足
「今日の時点ですでに期限を過ぎて未完了のタスクはありません!素晴らしいです」の後ろについている、「:raised_hands(:)」という文字ですが、これは Slack 上で使える絵文字です。
もちろんつけなくても全く問題ありませんが、何となく絵文字つけたかったので記載しました。
ちなみにバンザイしている絵文字が出ます。 ←これ
実際に上記の文字を利用する場合は、~~~ hands(:)の()は外して下さい。
3.1.4 どういった処理なのか一目で分かりにくいので、モジュールに名前を付けて分かりやすくします。モジュールまでカーソルを移動してから右クリックして「Rename」をクリック。
全体的にどんな処理をしているか分かりやすくなりました。
3.1.5 続いて、フィルターの設定をしていきます。「●●●●●」の部分を右クリックして「Set up a Filtar」を選択したら以下の様に選択して下さい。選択したら「OK」をクリックです。
- Condition:Text を選択
- Basic operators:Exists を選択
3.1.6 次にもう一つの方のフィルターを設定します。先程と同じく「●●●●●」の部分を右クリックして「Set up a Filtar」を選択したら以下の様に選択して下さい。選択したら「OK」をクリックです。
- Condition:Text を選択
- Basic operators:Does not exists を選択
3.1.7 以上で設定が終わりです。ここまでの設定を保存しておきます。モジュールの下に「save」ボタンがあるので忘れずにクリックして保存をしておきましょう。
今回の処理の流れとしては、Notion モジュールで Database から値を取ってきて、Tools モジュールで1つのブロックに整形して、本日を相対的に見て未完了のタスクがあれば上の Slack モジュールへ、未完了のタスクがなければ、下の Slack モジュールへ、といった感じです。
save ボタンを押下したら「Run once」をクリックして、正常に処理が走るか( Slack に通知が来るか)試してみます。本日(2023/07/25)時点の未完了タスクは画像の通り1つあります。1つだけ Slack に飛べば正常です。
3.1.8 問題なく Slack にメッセージが来ましたので成功です。2枚目の画像を見ていただくと、実際の処理の流れが確認出来ます。上の Slack モジュールのルートが緑になっていますので、今回そちらに処理が走ったという事になります。
3.1.9 続いて、未完了タスクがない状態で同じく「Run once」を実行して処理を走らせてみます。
3.2.0 「未完了タスクはありません」とちゃんと分岐出来てますね。先程と同じく処理の流れも画像を張っておきます。(2枚目)
3.2.1 後は、通知のタイミングがデフォルトの「15min ずつ」となっているので、ここを毎朝 9:00 にしようと思います。その後、「save」も忘れないようにして下さい。
3.2.2 最後にこのシナリオの起動状態を「オン」にしたいので、画面左下の「OFF」をクリックして「ON」にして下さい。これで起動されます。
以上
まとめ
お疲れ様でした!
思ったより難しく何回もやり直しました。
しかし、今回初めて自動化ツールを触って非常に便利だなぁ。。としみじみ感じました。
無料プランでは制限あるものの、単純作業や定形外作業は自動化させて、効率よく作業出来るようにしたいですね。
又、色々な箇所で躓いたため、今回の記事は画像多めにしてなるべく皆さんの環境と相違がないようにしています。
もし、記事通りやっても出来ない場合は、コメントでも Twitter でもご連絡下さいね。
ここまで見ていただき、ありがとうございました!
良い、自動化ライフをお過ごし下さいませ!