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