2025年7月9日 星期三

AppSheet 教學:使用 Valid If 設定「收入」與「支出」欄位二選一的防呆機制

在建立記帳或庫存管理應用時,我們常會遇到「收入」與「支出」或「入庫」與「出庫」這類互斥的欄位。理想情況下,單一筆紀錄只應該有其中一個欄位被填寫,以避免數據混亂和計算錯誤。

本篇教學將分享如何利用 AppSheet 中的 Valid If 條件,輕鬆實現收入與支出「二選一」的防呆機制,確保使用者無法同時在這兩個欄位中輸入資料。

問題情境

在一個簡單的收支紀錄 App 中,我們有「收入」和「支出」兩個數字欄位。在預設情況下,使用者可以同時填寫這兩個欄位,如下圖所示,這可能會導致帳目不清。

我們的目標是:

  • 當「收入」欄位有值(大於0)時,「支出」欄位不能輸入。

  • 當「支出」欄位有值(大於0)時,「收入」欄位不能輸入。

解決方案:使用 Valid If 條件

要達成這個目標,我們需要在「收入」和「支出」這兩個欄位的設定中,加入一個驗證條件。

步驟一:找到 Valid If 設定

  1. 進入 AppSheet 編輯器,點擊左側的 Data

  2. 選擇您的資料表(例如:收支紀錄)。

  3. 點擊 Columns,找到您要設定的欄位(我們先以「收入」欄位為例)。

  4. 點擊「收入」欄位左側的鉛筆圖示,進入欄位設定。

  5. 向下捲動找到 Data Validity 區塊並展開。

步驟二:理解與撰寫驗證公式

Valid If 的作用是:當此處的公式回傳結果為  如果公式回傳 FALSE,則會阻擋儲存並顯示錯誤訊息。

我們的目標是防止「收入」和「支出」同時大於 0。換句話說,我們要阻擋的條件是:
AND([收入]>0, [支出]>0)

當上述條件成立時(即兩個欄位都有值),我們希望驗證不通過(回傳 FALSE)。因此,我們需要將整個條件反轉,這時就要用到 NOT() 函數。

最終的公式如下:

Generated code

NOT(AND([收入]>0, [支出]>0))

這段公式的白話意思是:「除非『收入』和『支出』兩個欄位的值同時都大於 0,否則這個驗證都是通過的。」這就完美達成了我們的防呆目標。

步驟三:套用公式並設定錯誤訊息

  1. 在 Valid If 的輸入框中,貼上我們的公式 NOT(AND([收入]>0, [支出]>0))

  2. 在下方的 Invalid value error 輸入框中,可以自訂驗證失敗時的錯誤訊息,讓使用者更清楚問題所在。例如,我們可以輸入:
    "收入與支出只能擇一填寫"
    (注意:文字訊息需要用雙引號 "" 包起來)

步驟四:對另一個欄位重複操作

為了讓這個機制完整,我們需要將完全相同的設定套用到「支出」欄位上。重複步驟一至三,將同樣的公式和錯誤訊息也設定給「支出」欄位。

完成後,記得點擊右上角的 Save 儲存變更。

最終成果展示

設定完成後,當使用者試圖在同一筆紀錄中同時輸入收入與支出時,系統會立即顯示我們自訂的錯誤訊息,並阻止儲存。

使用者必須將其中一個欄位的值改回 0,才能成功儲存紀錄,有效確保了數據的正確性。無論是新增紀錄還是修改現有紀錄,這個驗證規則都會生效。

總結

透過簡單的 NOT(AND(...)) 邏輯組合,我們就能在 AppSheet 中輕鬆建立強大的欄位防呆機制。這個「二選一」的應用非常廣泛,不僅限於收支紀錄,任何具有互斥關係的欄位都可以應用此方法,大幅提升您 App 的數據品質與使用者體驗。


核心公式速查

  • Valid If (欄位驗證條件):

    Generated code
    NOT(AND([收入]>0, [支出]>0))
  • Invalid value error (無效時的錯誤訊息):

    Generated code
    "收入與支出只能擇一填寫"


沒有留言:

張貼留言

注意:只有此網誌的成員可以留言。

[AppSheet教學] 如何在Google試算表中直接顯示AppSheet上傳的圖片?

在使用AppSheet開發應用時,我們常會需要拍照上傳功能。然而,上傳後的照片在對應的Google試算表中,預設只會儲存檔案的路徑名稱 (例如: Photos_Images/image.035915.jpg ),而非直接可見的圖片。這篇文章將教你如何透過幾個簡單的步驟,組合出正確...