Ragic で数式を使用していると、以下のような疑問に直面することがあります:
「最初はうまく動いていたのに、途中から更新されなくなったのはなぜ?」
「インポートや『他のフォーム内のフィールド値を更新』、『データコンバート』を使ったのに数式が反映されない?」
これらの現象の主な原因は、Ragic の基本的な仕様である:
「数式は、データが入力されたときのみ発動する」というルールにあります。
これは、数式がそのシート(画面)上で手動入力・編集されたときにのみ発動するためです。
この仕組みは、システムのパフォーマンス維持と、既存データの意図しない変化を防ぐために設計されています。
数式を既存レコードに反映させたい場合: 以下のいずれかの方法を用いて再計算を発動する必要があります:
手動で各レコードを編集し直す(どれかの値を上書き保存する)
「数式の再計算」処理を実行する(手入力なしでバックエンドから再計算が可能)
詳しい操作方法については、数式ドキュメントをご参照ください。
たとえば、数式が「注文」シートに設定されている場合、「商品」シートなど別のシートで価格などの関連データを編集しても、注文シート側の数式は発動しません。
数式が再計算されるのは、注文シートで直接データを編集したとき(例:数量の変更)に限られます。
また、注文シートのデータが手動入力以外の方法で更新された場合も、数式は自動的に発動しない場合があります。
その場合は、以下で説明するように追加の設定が必要です。
よくリストページで編集を行う運用の場合は、該当のフィールドをリストページにも追加し、同じ数式を設定することを推奨します。これにより、どちらの画面からデータを編集しても数式が正しく動作するようになります。
同じフィールドに対してバージョンごとに異なる数式を設定している場合は、切り替え時に値が上書きされる可能性があるため、計算結果が一致するよう注意してください。
各バージョンでの数式設定を確認したい場合は、フィールド情報を利用すると便利です。
(1) 数式の構文エラー
数式の記述ミスが原因で発動しないことがあります。特に条件式(IF関数)を使う際は注意が必要です:
.RAW の使用が必要なケースかどうか確認してください。
TODAY() や NOW() は IF の中で直接使用できません。別フィールドで計算させて、それを参照する形にしてください。こちらの例も参考に。
(2) フィールド型と数式の不一致
数式によっては、特定のフィールド種類でしか機能しないものもあります。たとえば、計算や比較演算子は 数値型・金額型・日付型にのみ対応しています。
(3) 自動生成フィールドを参照した数式が保存時にズレる
自動生成フィールドは、複数ユーザーが同時にレコードを作成した場合、入力中に一時的に同じ番号が表示されることがあります。保存時に自動でユニーク化されるため、参照している数式の値が保存後に変わってしまうことがあります。
この問題を回避するには、保存後にバックエンドで数式を再計算するワークフローの設定がおすすめです。
(4) TODAY() を使った日付の再計算が日次で反映されない
この場合はこちらのガイドに沿って、トラブルシューティングを行ってください。
以下のいずれかの方法で、既存レコードに対して数式を再適用できます:
設計モードに入り、シート全体で 数式の再計算を実行する
「すべての数式をこのレコードに適用」アクションボタンを作成する
さらに、TODAYTZ() などを用いて日付に応じて毎日変化する数式がある場合は、日次数式再計算ワークフローを設定することで、毎日自動で数式を更新できます。