在使用 AppSheet 進行開發時,我們經常使用 Virtual Column (虛擬欄位) 來進行即時運算。例如在進銷存系統中,商品的「當前庫存」通常是由 SUM(進貨) 減去 SUM(銷貨) 動態計算出來的。
為什麼需要這樣做?
資料同步:希望 Google Sheet 上能直接看到最新的庫存數字,而不是只能在 App 裡看。 後續應用:試算表中的實體數據可以用於其他報表分析或與其他系統串接。
實作邏輯概覽
在 商品表 建立一個將虛擬欄位數值複製到實體欄位的 Action。 在 進貨/銷貨紀錄表 建立一個觸發器 Action,去驅動商品表的更新。 在 表單視圖 (Form View) 設定 Form Saved 事件,當資料儲存時自動執行上述動作。
步驟一:準備資料表欄位
Virtual Column (庫存):AppSheet 內自動計算的欄位(藍色)。 實體欄位 (實際庫存):Google Sheet 內真實存在的欄位,目前可能是空的或舊資料。
步驟二:建立「計算庫存」動作 (針對商品表)
進入 Behavior > Actions。 點選 New Action。 Action Name:命名為「計算庫存」 (或 Update Inventory)。 For a record of this table:選擇 商品表 (例如:一整天代賣商品)。 Do this:選擇 Data: set the values of some columns in this row。 Set these columns: 左邊選擇實體欄位:實際庫存 右邊填入虛擬欄位值:[庫存] (你的 Virtual Column 名稱)
Appearance (外觀設定): 建議將 Prominence 設為 Do not display。 原因:我們希望這是系統自動執行的,不需要使用者手動去按按鈕。
步驟三:建立「觸發」動作 (針對進貨/銷貨紀錄表)
進入 Behavior > Actions。 點選 New Action。 Action Name:命名為「進貨事件」 (或 Trigger Inventory Update)。 For a record of this table:選擇 進貨紀錄表 (例如:進貨紀錄)。 Do this:選擇 Data: execute an action on a set of rows (對另一張表的一組資料執行動作)。 Referenced Table:選擇 商品表 (因為我們要更新的是商品庫存)。 Referenced Rows (最關鍵的一步): 我們需要用公式找出「這一筆進貨是對應哪一個商品」。 輸入公式: (語意:從商品表中,選出那個「商品編號」等於「這筆進貨紀錄商品編號」的那一列)
Referenced Action:選擇步驟二建立的 「計算庫存」。
步驟四:設定表單儲存後自動執行
進入 UX > Views。 找到進貨紀錄的 Form View (通常是 進貨紀錄_Form)。 注意:如果你是透過關聯表單 (Inline View) 新增,請找到對應的 Inline Form View。
往下捲動找到 Behavior 設定區塊。 在 Event Actions > Form Saved (表單儲存時) 的選項中。 選擇步驟三建立的 「進貨事件」。 按下 Save 儲存設定。
測試與驗證
在 App 中新增一筆進貨資料(例如:進貨數量 +1)。 儲存表單。 等待 App 同步完成。 驗證 App:查看商品列表,庫存數量應已更新。 驗證 Google Sheet:打開後台試算表,你會發現對應商品的「實際庫存」欄位,已經被寫入最新的計算結果了。
注意事項
銷貨紀錄 也需要重複「步驟三」與「步驟四」,建立一個「銷貨事件」並綁定在銷貨表單上,這樣賣出商品時才會扣庫存。 這種寫法是利用 AppSheet 前端的 Action 觸發,如果資料量非常大,可能會有些微的效能影響,但在一般庫存管理場景中非常實用。
希望這篇教學能幫助大家解決 Virtual Column 無法存回試算表的困擾!
沒有留言:
張貼留言
注意:只有此網誌的成員可以留言。