よくある数式エラー

hc:トラブルシューティングの記事
この記事の内容

Notionの数式を使用する際によく見られるエラーとそのトラブルシューティング方法についてご紹介します🔨。


数式のエラーを修正する方法がわからない場合は、Notion AIがお手伝いします。詳しくはこちら →

参照データベースへのアクセス権がない場合、数式を使って正確に計算をすることはできません。それは、数式がソースデータベースとそのプロパティ設定へのアクセスを必要とするためです。

対策

ボタンまたはデータベースのオートメーション内で、数式により参照されるすべてのページとデータベースにアクセスできることを確認してください。

データベースで使用する数式のプロパティとは異なり、オートメーションで使用する数式では、数式の戻り値が特定の型であることが必要とされます(例:date、text、number、person)。特定の型でない場合、オートメーションは適切に保存も、実行もされません。

対策

数式が正しい型の値を返すことを確認してください。たとえば、ページのPersonプロパティの値を設定する数式を書く場合、数式はdateではなく、ユーザーまたはユーザーのリストを返す必要があります。また、配列型プロパティ(例:multi-select)で特定の条件を評価する場合は、if() ステートメントで == の代わりに.includesを使用してください。

このエラーは本来とは異なるデータ型を使用して空の値を表そうとする際によく発生します。たとえば、if(Date, Date.dateAdd(1, “day”), "") という数式では、戻り値の型が特定不能になります。なぜなら、結果が日付になる可能性もあれば、末尾の「""」によってテキストになる可能性もあるからです。これは、代わりに empty() を使用して空の値を表すことで修正できます。修正後は、if(Date, Date.dateAdd(1, "day"), empty()) のようになります。

Notionの数式の 深さは、15層までしか利用できません。数式が別の数式またはロールアップを参照するたびに、層がひとつ追加されます。これは、数式が別のデータベースにある場合でも適用されます。

この上限に達すると、Notionにエラーメッセージが表示されます。

対策

不要な数式とロールアップを組み合わせ、プロパティの数を減らすことで、セットアップをシンプルにします。複数の数式が同様の働きを行う箇所を探し、それらを1つに統合してみましょう。

同じオートメーションアクション内 で複数のカスタム変数が定義されている場合、それらカスタム変数は互いを参照しあうことができません。

たとえば、同じアクションでvar1var2を定義した場合、var2はその定義にvar1を使用できません。

対策

各変数をそれぞれ個別のアクションで定義します(最初の変数を作成し、新しいアクションをオートメーションに追加し、次の変数を個別に定義します)。そうすることで、各変数が適切に認識されます。

現在、オートメーション内で定義された変数をオートメーションによって操作したいデータベース内のページを絞り込むために使用することできません(例:「次の 変数を含む」フィルターにマッチするページを編集する」)。

対策

  1. 数式ボックスにトリガーページを入力して、カスタム変数を「This page」として定義します。

  2. アクションに編集ページを追加し、ステップ1のカスタム変数をターゲットとして選択します。

数式内でリレーション、ロールアップ、人のプロパティを操作する場合、数式はページまたは人のリストを返します。リレーション内のプロパティを参照するには、最初の要素を定義する必要があります。そうしないと、オートメーションが一時停止してしまいます。この問題は、リレーションプロパティに対してマップ関数を使用する数式を作成するときにも発生する可能性があります。

対策

最初の要素を取得するには.first().at(0)といった関数を使用し、ページのリストをループするには、.map().filter().every().some().find()といった関数を使用します。

もし数式に予期しない空の値(特に日付やユーザーの値)が紛れ込むようなことがあると、オートメーションはエラーを検知して、自動的に一時停止します。

対策

「if」または「ifs」を使用すれば、操作対象のプロパティに値が入っているかどうかを確認できます。たとえば、Date.dateAdd(1, "day") と記述するよりも、if(Date, Date.dateAdd(1, "day"), empty()) という形式を用いるのが望ましいです。これにより、dateAdd は Date に値がある場合のみ実行されるようになります。また、日付が入っていない場合には、更新対象のプロパティを空にするよう、オートメーションに対して明示的に指示を出すことができます。または、操作対象となるプロパティに値が入るようにフィルターを設定したビューを作成し、そのビュー内にあるページに対してのみオートメーションが実行されるように設定するという策もあります。

数式が予想どおりに機能しない場合は、カッコが抜けている、間違った演算子またはサポートされていない関数を使用しているといった、構文エラーが原因である可能性があります。数式の構文の完全な解説については、こちらの記事 →をお読みください。


フィードバックを送信

このコンテンツは役に立ちましたか?