コンテンツまでスキップ

【Notion】データベースのアイテムを日付指定でSlackに通知する【Zapier】

はじめに


ネクストモードの南です。

ネクストモードではZapierを社内の業務効率化に役立てています。
今回はZapierとNotion/Slackを組み合わせて、Notionのデータベースに登録したアイテムを日付指定でSlackに通知するアプリを作ってみましたので、紹介させていただきます。

目次

アプリの概要


以下がアプリの概要図となります。
今回は社内アナウンスの用途で利用するケースを想定していますが、Notionのデータベースの構成などは利用シーンに合わせて変えてください。

アプリの概要1

利用者はSlackに投稿したい内容を、Notionのデータベースにアイテムとして登録します。
この際、投稿予定の日時も指定します。

アプリの概要2

Zapierが起動したタイミングで指定した投稿日時を迎えており、かつ未投稿のアイテムがあればSlackチャンネルにメッセージを投稿します。

アプリの概要3

アプリの課題

今回のアプリですが、少し残念な点があります。

例えば、以下のような感じで同じ投稿日時が指定された複数のアイテムが登録されている場合、1件のアナウンスしか処理されません。

  • データベースに同じ[投稿予定日]が指定された複数のアイテムがあっても
    アプリの課題1
  • 1回の実行では1件しかSlackに通知されない
    アプリの課題2

1回の実行でデータベースを繰り返しクロールして処理するような機構も検討したのですが、複雑&冗長になってしまい、あまり筋がいいものになりませんでした。

妥協案として、アプリを1日に複数回実行する形にしてお茶を濁しています。
(一度にまとめて通知できなくても、その日の内に通知ができればいいじゃないか、というやや安易な考えです。)
Zapierの実行回数が多くなるのと、決まった時間にまとめて通知できないという課題はありますが、その分処理もシンプルになっています。

今後筋の良さそうな解決策があれば、こちらの記事の内容も更新していきたいと思います。

ワークフロー


Zap(Zapierで作成したアプリ)のワークフローは以下のようになります。
ステップを複数持つZapとなるため、Zapierで有料プランの契約が必要になることをご留意ください。

ワークフロー

1.の[Every Hour in Schedule by Zapier]がワークフローのトリガーとなっており、スケジュールでZapを起動させています。
今回は1時間毎にZapが起動する設定にしています。

2.の[Find Database Item in Notion]では、Notionデータベースで投稿対象のアイテムが存在するか検索処理をしています。
今回はZapが起動したタイミングでプロパティの[投稿予定日]で指定された日時を迎えている、かつ未投稿のアイテムがある場合には後続の処理を続け、条件に合致しない場合は処理を終了する、という動作にしています。

3.の[Send Channel Message in Slack]では、2.の条件に合致したアイテムからテキストメッセージを作成し、指定したSlackチャンネルにメッセージを投稿する、という処理をしています。

4.の[Update Database Item in Notion]では、投稿処理をしたNotionのアイテムについてプロパティの更新(メッセージの投稿日時を反映する)を行っています。

構築手順


ここからは構築手順を紹介していきます。

1. Notion、Slackの準備

まず、Notionでアナウンス内容を記載するデータベースを用意します。

プロパティは以下の項目で作成しています。
この内、タグ以外の項目はZapierと連携させるプロパティとなります。
プロパティは利用用途に応じてカスタマイズをしてみてください。

  • データベース名:お知らせ
  •  プロパティ
    • 件名:種別は[タイトル]、アナウンスの件名を記載する
    • 本文:種別は[テキスト]、アナウンスの内容を記載する
    • 投稿予定日:種別は[日付]、アナウンスを投稿する日時を指定する
    • 投稿日(自動入力):種別は[日付]、投稿処理後にZapが値を入力する(フラグ用途のプロパティ)
    • タグ:種別は[マルチセレクト]、アナウンスの種別を記載する ※Zapierとの連携はなく、任意の管理用途を想定

データベースにはテスト用にアイテムを1つ登録しておきます。
テスト用のアイテムの[投稿予定日]は、現在時刻より以前の日時を指定するようにしてください。
また、[投稿日(自動入力)]には値を入れないようにします。

Notion、Slackの準備1

続いて、Slack側でアナウンス通知用のチャンネルを用意します。
今回はtest-announcementというパブリックチャンネルを用意しました。

Notion、Slackの準備2

2. Zapierの設定手順

2-1. トリガーの設定

最初にZapのトリガーとなる起動スケジュールの設定をします。

Zapierにログインしたら、左ペインの[Zap]をクリックし、Zapの格納先となるフォルダーを選択したら[Create][New Zap]の順でクリックして新しいZapを作成します。

トリガーの設定1

Zapの作成画面になったら、まずは左上の設定でZapの名前を入力します。

トリガーの設定2

また、以下の手順でZapのタイムゾーンを日本標準時刻に合わせます。

  • 右ペインの[Setting]をクリックする
    トリガーの設定3
  • [Setting]の画面の[Timezone]の項目で[GMT+09:00 Asia/Tokyo]を選択する
    トリガーの設定4

トリガーを選択していきます。
今回はスケジュールでZapを起動させたいので[Schedule by Zapier]を検索して選択します。

トリガーの設定5

[Event]の項目ででプルダウンから[Every Hour]を選択し、[Continue]をクリックします。

トリガーの設定6

[Trigger on weekends?]の項目ででプルダウンから[no]を選択し、[Continue]をクリックします。

トリガーの設定7

[Test trigger]をクリックします。

トリガーの設定8

[Your trigger is working!]という表示が確認できたら、[Continue]をクリックします。

トリガーの設定9

2-2. Notionデータベースでアイテムを検索

続いて、Notionのデータベースから通知したいアイテムを検索するための設定を追加していきます。

Actionの選択画面で[Notion]を検索してクリックします。

DBアイテム検索1

[Event][Find Database Item]を選択し、[Continue]をクリックします。

DBアイテム検索2

[Connect Notion][Sign in]クリックします。

DBアイテム検索3

  • 補足
    すでにコネクションがある場合には、[Choose an Account]の項目で[Choose]をクリックし、[Connect a new account]をクリックします。
    DBアイテム検索4

別ウィンドウでNotionへのアクセスリクエストを設定する画面が表示されます。
右上のプルダウンメニューから対象のワークスペースを選択し、[ページを選択する]をクリックします。  

DBアイテム検索5

検索ウィンドウからデータベースを検索してチェックを入れ、[アクセスを許可する]をクリックします。

DBアイテム検索6

元のZapierの画面に戻って、[Continue]をクリックします。

DBアイテム検索7

[Action]の画面で以下のように選択した後、[Continue]をクリックします。
データベースの中に[投稿日(自動入力)]が未入力、かつ[投稿予定日]がZapの起動時と同じ(または以前の)アイテムが存在する場合に処理を続ける、という条件にしています。

  • Database:事前に作成していた[お知らせ]のデータベース
  • 投稿日(自動入力) filter:[is_empry]
  • 投稿予定日 filter:[on_or_before]
  • 投稿予定日:[1. Every Day in Schedule by Zapier][1.ID]
  • Should this step be considered a "success" when nothing is found?:[No]
  • Create Notion Database Item if it doesn’t exist yet?:チェックを外す

DBアイテム検索8

[Test action]をクリックして実行します。
正常にデータベースへアクセスができると、事前にテスト用として登録していたアイテムの値が表示されます。

DBアイテム検索9

2-3. Slackへの通知設定

続いて、Slackに通知するための設定をしていきます。

2.の処理の後に追加するので、2.のアクションの下の[+]マークをクリックします。

Slackへの通知設定1

Actionの選択画面で[Slack]を検索してクリックします。
続いて、[Event]から[Send Channel Message]をクリックし、[Continue]をクリックします。

Slackへの通知設定2

[Account]の項目で対象のSlackのワークスペースを選択して[Continue]をクリックします。
※対象のSlackワークスペースが表示されない場合はこちらの備考の内容をご確認ください。

Slackへの通知設定3

以下のように項目を選択し、[Continue]をクリックします。
今回は以下の項目以外はデフォルトにしていますが、設定やメッセージの内容は好みに合わせてカスタマイズしてみてください。

  • Channel:アナウンス通知用のSlackチャンネル
  • Message Text:
    [2. Find Database Item in Notion]
    [2.Title]
    [2. Find Database Item in Notion]
    [2.Properties 本文]
    [2. Find Database Item in Notion]
    [2.Url]
  • Send as a bot:[Yes]
  • Bot Name:お知らせ投稿
  • Include a link to this Zap?:[No]

Slackへの通知設定4

  • 補足
    Channelの項目でSlackチャンネルが表示されない場合は、以下のように入力します。
    Slackへの通知設定5

[Test action]をクリックし、アナウンス通知用のSlackチャンネルにメッセージが投稿されたことを確認します。
[Close]をクリックしてアクションの編集を閉じます。

Slackへの通知設定6

  • 備考:ZapierとSlackのワークスペースのコネクトが未実施の場合、コネクトを実施する必要があります。
    • [Slack account]の項目で対象のSlackのワークスペースがない場合、[Connect a new account]をクリックします。
      (または、コネクトが1つもない場合は[Sign in]という表示をクリックします。)
      Slackへの通知設定補足1
    • 別画面でSlackワークスペースへのリクエストウィンドウが開かれます。
      右上のプルダウンから対象のワークスペースを選択し、[許可する]をクリックします。
      (対象のワークスペースが表示されない場合は、プルダウンから[別のワークスペースを追加する]を選択し、ワークスペースへのログイン処理を行います。)
      Slackへの通知設定補足2
    • 元の項目に戻り作業を継続します。

2-4. Notionデータベースのアイテム更新

最後に、Notionのデータベースで通知したアイテムに対して、投稿日を追加するための設定をしていきます。

3.のアクションの下の[+]マークをクリックして、アクションを追加します。
続いて、Actionの選択画面で[Notion]を検索してクリックし、[Event]の項目で[Update Database Item]を選択し、[Continue]をクリックします。

DBアイテム更新1

[Account]の画面で、2.のアクションで追加したコネクションを選択し、[Continue]をクリックします。

DBアイテム更新2

[Action]の画面で以下のように選択した後、[Continue]をクリックします。  

  • Database:事前に作成していた[お知らせ]のデータベース
  • Item:[2. Find Database Item in Notion][2.ID]([Custom]タブから選択)
  • Include time with date fields?:[True]
    ※ 本項目を設定後に次の「投稿日(自動入力)」の項目が表示される
  • 投稿日(自動入力) - Start Date and Time:[1. Every Day in Schedule by Zapier][1.ID]

DBアイテム更新3

[Test action]をクリックして実行します。
お知らせデータベースの対象アイテムの[投稿日(自動入力)]に日時が追加されたことを確認します。  

DBアイテム更新4

問題なければ[Publish Zap]をクリックします。
続けてウィンドウが表示されるので、[Publish & Turn On]をクリックします。
これで作成したZapがリリースされました。

DBアイテム更新5

DBアイテム更新6

3. テスト

実際にテストをしてみます。

Notionのデータベースにアナウンスするアイテムをいくつか登録しておきます。

テスト1

1時間に1回の通知のタイミングで、[投稿予定日]の時間を迎えた(または過ぎている)アイテムについてはSlackチャンネルに投稿されます。

テスト2

また、Notionのデータベースの[投稿日(自動入力)]のプロパティにも投稿時間が追加されています。
まだ[投稿予定日]の時間を迎えていないアイテムについては、指定した時間になるまでそのまま残ります。

テスト3

まとめ


ZapierとNotion/Slackを組み合わせた、Notionのデータベースに登録したアイテムを日付指定でSlackに通知するアプリを紹介させていただきました。
エントリ内では社内アナウンスで利用するケースを想定していますが、Notionのデータベースの構成を変えれば様々な用途に利用することができると思うので、ご参考にしていただけると幸いです。

ZapierはいろんなアプリケーションやSaaS製品と連携させることができ、シンプルな要件であればノーコードで実装することができます。
今回のように繰り返し発生する業務を自動化させることはもちろんですが、アイディア次第でいろんな施策にもつなげることができると思います。

ネクストモードは社内のいろんな場面でZapierを活用させていますので、今後も有用な取り組みは紹介していきたいと思います。

Notionについてのお問い合わせ

ネクストモード社は、日本で3社しかないNotion販売代理店です。(2023年01月01日現在)
Notion導入を検討の際は是非下記からお問い合わせ頂けますと幸いです。

SaaS_LPProcedure