BASEプロダクトチームブログ

ネットショップ作成サービス「BASE ( https://thebase.in )」、ショッピングアプリ「BASE ( https://thebase.in/sp )」のプロダクトチームによるブログです。

Notion FormとAutomationを使って定型タスクの自動生成ツールを作ってみた

本記事はBASEアドベントカレンダー2024の15日目の記事です。

はじめに

Pay IDチームでプロダクトマネージャーをしているMIYACHINです。

Pay IDは、BASEで作られたショップでのお買いものを楽しむためのショッピングサービスで、クイックでスムーズな決済機能と、ショッピングアプリを提供しています。

本記事では、Notion FormとAutomation機能を活用して、定型タスクを自動生成するツールを作った話をします。

背景

新しい機能をリリースするときには、「BASE」のショップオーナーや「Pay ID」の購入者に向けて、メールやブログなどを通じて告知を行います。

BASEでは、ユーザーとのコミュニケーションの窓口を担当しているチームがあり、告知をする際は、そのチームと連携をとりながら準備を進めていく必要があります。具体的には、例えばメール配信の場合は、告知日時の調整、原稿の作成、原稿のレビュー、テスト配信などです。

しかし、開発業務に注力するあまり、これらの準備が告知日ギリギリになってしまうことがあります・・・。

一方で、これらの準備は決まりきったタスクの消化であるため、告知日から逆算して自動的にタスクを生成できれば、より計画的に準備を進められるのではないかと考えました。

また、新しいメンバーが入社した際も、これらの複雑なフローを一から覚えるのは負担が大きいため、この課題も含めて解決できる方法を模索することにしました。

検討した実現方法

Webアプリ + Notion API

開発自体は楽しそうだけど、メンテナンス可能な人材が限られることと、Notion APIキーの管理体制が未確立であることから却下。

Google Form + GAS + Notion API

Webアプリより実装はシンプルだけど、GASを扱える人材が限られるため、これも却下。

Notion Form + Automation

社内のNotion相談Slackチャンネルで提案されたアイディア。Notion Formは誰でも操作可能で、Notion APIも不要であるためベストな選択肢に。

Notion Formとは?

「Notion Form」とは、Notion内でフォームを作成・管理できる機能で、2024年10月にリリースされた機能です。従来のNotionのデータベース機能に加えて、外部からの情報収集をよりスムーズに行えるようになりました。

これを活用することで、フォームの回答結果をNotionのデータベース上でリアルタイムに管理・分析できるようになります。回答データは自動的にデータベースに反映され、他のNotionページやデータベースと連携することも可能です。また、フォームのデザインも用途に応じて柔軟にカスタマイズすることができ、質問の種類や回答形式の選択、必須項目の設定など、Google Formと同等の運用をすることができます。

作り方

それでは実際にどのようにツールを作ったか、簡単にご紹介します。

1. Notion Formを作成する。

フォームには、告知日、告知媒体、告知コードを入力できるようにします。(「告知コード」が何かはこの後説明します)

このフォームの回答は自動作成されるDBに入ってきます。(一旦このDBを「フォーム回答出力先DB」と呼びます。)

2. タスク出力先DBを作成する

「フォーム回答出力DB」とは別に、実際に消化していくタスクを生成する先のDBを作成します。

カラムはタスク名(タイトル)、締切(日付)、担当者(ユーザー)、ステータス(ステータス)、カテゴリ(セレクト)、メモ(文字列)、告知コード(文字列)で作成します。

3. 「フォーム回答出力先DB」にAutomationを設定する

1.で作成したフォームで選択する告知媒体ごとに”Automation”を作成します。

NotionのDBにはAutomationというものが指定でき、Automationにはトリガーと実行内容を定義できます。

トリガーと実行内容は以下のようなものが定義できます。

トリガー 実行内容
DBに新しい行が追加された時
新しい行のプロパティが〇〇だった時
特定のDBに新しい行を追加
メール / Slackで通知
Webhookを送信

このツールでは、トリガーと実行内容を以下のように設定します。

トリガー 実行内容
「フォーム回答出力先DB」の新しい行の「告知媒体」に〇〇が含まれていた場合 「生成タスク出力先DB」に特定の締切日でタスクを生成

具体的な例を挙げると、

新しい行の「告知媒体」に「メール」が含まれている場合、「タスク出力先DB」に「原稿のレビューを受ける」というタスクを告知日から3日前を締切にして作成、といった感じです。

その際に、告知日から逆算してタスクの締切日を設定しないといけないため、Notionを関数を活用して計算します。

if(day(トリガーページ.告知日.dateSubtract(5, "days")) <= 5, 
    トリガーページ.告知日.dateSubtract(3, "days"), 
    トリガーページ.告知日.dateSubtract(5, "days"))

※ このタスクは締切日は告知日から3日前に設定するよう計算しています。締切日が土日になる(day関数の結果が6以上)場合、締切日をさらに2日前倒しして設定しています。(変数が使えないので辛い)

上記のようなAutomationを告知媒体ごとに作成することで、フォーム回答出力先DBに行が追加されるたびに、タスク出力先DBに定型タスクが自動生成されていきます。

運用方法

タスク出力先DBに消化すべきタスクが生成されたら、このDBを各プロジェクトページから読み込みます。しかし、そのまま参照すると他の人が生成したタスクも一緒に読み込まれてしまうため、ここで使うのが最初に設定した「告知コード」です。

自分が生成したタスクには、フォームで回答した「告知コード」が紐づけられているので、その告知コードでフィルタリングして表示することで、自分に必要なタスクだけを参照することができます。

また、メールを配信するためにはどんな作業が必要か、ツールが自動生成してくれるので、新しく入ったメンバーも簡単に告知準備が進められるようになりました。

おわりに

Notion FormとAutomationを使って定型タスクの自動生成する方法についてご紹介しました。

今回ご紹介したような定型タスクの消化は、どのチームでも発生するものだと思うので、参考になれば幸いです。

僕の所属しているPay IDチームではエンジニアやプロダクトマネージャー、デザイナーなど幅広い職種で積極採用中なので、Pay IDチームの話を聞いてみたい!という方はぜひカジュアル面談やX( @miyachin_87 )などでお声がけいただけると嬉しいです!

採用情報 | BASE, Inc. - BASE, Inc.

明日はuenokaさんの記事です!