本コンテンツは、現在更新は行われておりません。
公式ヘルプセンターは こちら 📫
Notionのデータベースでは、Formulaと呼ばれる機能を使って様々な計算や他のデータベースの参照ができます。ExcelやGoogle Sheetsと同様に、合計値や様々な値の算出が可能です。 ⚗️
少々難解な機能ですので、分からないことがあればお気軽にNotionチームへお問合せください。
用語集
Formulaを使うための最大の難関はその用語を理解することです 😅 NotionでFormulaを使う際によく出てくる単語の意味をまとめました。
- Function: 複数のインプットとアウトプットを1対1で紐づける機能の総称。
- Syntax: 求める値を算出するための関数の語順(文法)を指す。
- Argument: functionに対するproperty等のインプットを指す。
- String: 文字列のことを指す場合が多い。(例:a string of letters next to each other) Formula内の文字列は常にダブルクオーテーションで囲む。
- Substring: string(文字列)の一部を指す。(例:"No" は "Notion" のsubstring)
- Boolean: ture(正)かfalse(誤)のこと。
- Concatenate: 2つのstringを組み合わせるfunction(機能)。
- 例:
concat("add", "text")
という関数で"addtext"
が表示される
用語の一例
上記の用語がどのように使われているか、例を紹介します。:
concat("add", "text")
concat
は function です。カッコ内のインプット情報に対し、何らかの計算やアクションを適用しています。
"add"
と"text"
がこの function に対しての argument です。
- それぞれの argument は文字列(または string)です。
- Function は様々なデータを augment に持つことができます。
- チェックボックス (これが boolean)
- 数字
- 日付
- Function の syntax(文法) の基本は以下2点。
- string(文字列) はダブルクオーテーションで囲む
- argument(インプット) はカッコで囲む
関数の書き方
- データベースの任意のカラムで
Property Type
メニューからFormula
を選択してください。メニューは property行 (Excelでいうタイトル行の部分) をクリックすると表示されます。
- Formula に何らかの処理をさせるためには、
Formula
に設定したカラムの任意のセル(property行以外)をクリックし、Type a formula
欄に function 名を入力します。
- Property名 は formula において変数として使うことができます。
- function は電卓のように簡単に使うことができます。カッコ、ダブルクオーテーションをお忘れなく。
- 例:21歳まであと何年?
Age
列に記入されている年齢から、21歳まであと何年か計算してみましょう。Age
列とは別に formula のための列を作り、Type a formula
欄で21 - prop("Age")
と入力すれば、21から「Age」列の数字をマイナスした数値を返す関数の完成です。
関数のメニュー
formula 列を編集する際には formula ウィンドウが表示されます。下記はformula ウィンドウ左側のサイドバーにあるメニューのセクションです。
Properties
: formula を設定しようとしているデータベースが持つすべての property(列)が表示されており、これらをクリックすると適切な表記で formula に取り込むことができます。
Constants
: π(パイ)などの一般的な constant(定数) です。こちらもクリックすると formula に取り込まれます。
Operators
: 簡単な処理をさせるためのメニューです。左側に表示されているアイコンでどのタイプの property をインプットとして使えるかが分かります。例えば subtract の左側には#
のマークが表示されているため、数値の property を処理させることができるとわかります。
Functions
: Notion内であらかじめ定義された、やや複雑な formula です。こちらも左側のアイコンで利用可能な property を判断することができます。
Type a formula
欄でこれらを入力、検索することもできます。
- 上下キーでスクロールすることもできます。
ヒント: サイドバー内で任意の項目にポインターを乗せると、右側に詳しい説明が表示されます。
- 例:締め切りまでの日数
- 締切の列があるデータベースで、締切まであと何日あるかを表示させてみましょう。
- 全てのタスクに対する締切が入力済の状態とします。
- 新しく formula の列を追加し、"Days Left" (残日数) と命名します。
- formula 列の任意のセルをクリックし、formula ウィンドウを表示させます。
Type a formula
欄にdate
と入力し、日付関連のコマンドを呼び出します。dateBetween()
を使って任意の2つの日付の間の期間を返すよう設定しましょう。
dateBetween()
の説明を読むと、日付を2つと何かしらの文字列を書くのが正しい文法とあります。この場合、それぞれ以下の日付を設定します。- date(1つ目): 締切日
- date(2つ目): 閲覧している日
- text: 締め切りまでの期間をどの単位(年、月、日、等)で表示させたいか
- formula サイドバーの
Properties
セクションから"Deadline"(締切日)をクリックし、dateBetween()
function にセットします。もしくはprop("Deadline")
と入力してもOK。
- この時点で formulaは
dateBetween(prop("Deadline"))
という表示になっています。それでは、閲覧しているその日の日付を設定しましょう。now()
で現在の日付が取得できます。
- function の完成までもう少しです!
- まず、締切日と現在の日付の間にコンマ「,」を打ちましょう。
dateBetween(prop("Deadline"), now())
- 次に、締切までの期間を表示させる単位を指定します。この例の場合は日数ですので、
dateBetween(prop("Deadline"), now(), "days")
となります。コンマをお忘れなく。 - 最後に
Done
をクリックすれば完成です。 - これで、締切までの日数を表示させることができました。 🙌
関数の活用例
参考まで、よく使われる formula の例を集めてみました。 👇
自動チェックボックス
チェックボックスの列が、他の列のデータに従い自動でオン/オフできる関数があります。
- 目的:
Priority
列が空欄もしくは "Important" という単語である場合にチェックする - Formula:
or(empty(prop("Priority")), prop("Priority") == "Important")
Demo
Name
Priority
Has Value?
判断基準が
Select
property の列でも同様のチェックボックス活用ができます。この例では、 Select
列の値が "Option1" の場合にチェックが入ります。equal(prop("Select"), "Option 1")
Demo
日付計算
日付の列でも様々な計算が可能です。
Demo
Name
Start Date
End Date
Years Employed
Years Remaining
Formatted Text
- 目的:"Years Employed" 列に、Douglasの雇用開始日から現在までの年数を表示する
- Formula:
dateBetween(now(), prop("Start Date"), "years")
- 目的:"Years Remaining" 列に、Douglasの残りの雇用契約年数を表示する
- Formula:
dateBetween(prop("End Date"), now(), "years")
- 目的: "Formatted Text" 列に、Douglasの残りの契約期間を年と月で併記する
- Formula:
concat(format(prop("Years Employed")), " years, ", format(dateBetween(prop("End Date"), now(), "months")), " months")
ROUND関数
これらの formula は、ExcelでいうRound関数のように使います。
- 整数にRoundする:
round()
でformulaを囲む - 例:
round(prop("One") / prop("Two"))
- 小数点第一位でRoundする:
round(
ここにformula*10)/10
- 例:
round(prop("One") / prop("Two") * 10) / 10
- 小数点第二位でRoundする:
round(
ここにformula*100)/100
- 例:
round(prop("One") / prop("Two") * 100) / 100
日付から曜日を特定する
Formula形式の列では、日付から曜日を特定することも可能です。
- "Monday, August 1, 2019" という形式で表示する
- 例:
formatDate(prop("Date"), "dddd, MMMM D, YYYY")
期限超過アラート
期限を超過している行にチェックを入れる関数を組むこともできます。CRMでコンタクト情報の横に次回連絡予定日を入れる等の活用方法があります。
- 例:
prop("Due Date") < now()
ヒント: formulaの活用例は随時募集中です。シェアしたい活用方法があれば、Notionチーム宛に送付ください!
よくあるトラブル
以下は formula 使用時にありがちなエラーメッセージです。
Type mismatch: prop("Number") is not a Text
- このメッセージからは、使おうとしている formula がテキスト形式の property しか受け付けないことが読み取れます。
- これを回避するためには、数値形式の property を指定して
format()
で表示形式を整える方法があります。 - 例:
prop("Number") + prop("Text")
だとエラーになるので、format(prop("Number")) + prop("Text")
という formula にします。
Too few arguments in function if
- このエラーメッセージは、if 関数 "else" の記述が漏れていることを示唆しています。
- "else empty" とする場合、formula の末尾に
, "")
を追記してみてください。 - 例:
if(prop("1") == "this", "that")
だとエラーになるので、
if(prop("1") == "this", "that", "")
という formula にします。よくある質問
formula 列で Group By
することは可能?
現時点ではできません 😓 しかしながら将来的に取り組みたい課題ではあります。
関連するページ
原文はこちら
解決しなかったら?
右下の
?
をクリックして、メッセージを送ってください!
Eメールでも受け付けています。 team@makenotion.com ✌️