在今天的 AppSheet 教學中,我們將探討一個非常實用且強大的功能:如何在 App 中直接使用 Google Sheets (或 Excel) 的試算表公式。我們將透過一個「會議簽到系統」的範例,來展示如何利用 VLOOKUP 函數,實現一個更具彈性的資料連動應用。
應用情境
公司有多場會議,每場會議都需要記錄出席人員。 員工擁有自己的員工編號,簽到時只需輸入或掃描員工編號即可。 系統需要根據輸入的員工編號,自動帶出員工的姓名。
基礎設定:三張資料表
會議 (Meetings): 用於建立不同的會議場次。 會議編號 (Key) 會議名稱 會議修改時間
人員 (Personnel): 存放所有員工的基本資料。 人員編號 (Key) 人員名稱
簽到表 (Sign-in List): 記錄每場會議的簽到狀況。 簽到表編號 (Key) 會議編號 (Ref 類型,關聯至「會議」表) 人員編號 (簽到時手動輸入的欄位) 人員名稱 (我們希望此欄位自動帶出) 簽到時間
核心步驟:設定 Spreadsheet Formula
在 AppSheet 編輯器中,進入 Data > Columns,並選擇 簽到表。 找到 人員名稱 這個欄位,點擊左側的鉛筆圖示進入編輯模式。 展開 Auto Compute 區塊,你會看到幾個選項。我們要使用的是 Spreadsheet formula 。在這個欄位中,輸入你在 Google Sheets 中會使用的 VLOOKUP 公式。假設在試算表中,「人員編號」在 C 欄,「人員名稱」在 D 欄,而「人員」資料表的編號和姓名分別在 B 欄和 C 欄,你的公式會像這樣: C2: 要查找的值 (當前這一筆簽到記錄的 人員編號)。 '人員'!B:C: 要查找的範圍 (在「人員」工作表的 B 到 C 欄)。 2: 找到後,回傳範圍中的第 2 個欄位的值 (也就是 人員名稱)。 0: 表示需要精確匹配。
將這個公式貼到 Spreadsheet formula 欄位中。 儲存設定。AppSheet 會自動將這個公式轉換為它內部使用的 R1C1 格式,例如:vlookup(RC[-1],'人員'!C[-2]:C[-1],2,0)。這表示它會根據欄位的相對位置來計算,更加穩健。
實際操作與問題排解
臨時簽到: 我們在簽到 App 中新增一筆記錄,會議選擇「臨時會」,人員編號 輸入一個不存在的 A005。儲存後,你會發現 人員名稱 欄位是空的。 事後補登資料: 我們到「人員」管理介面,新增一筆資料:人員編號 為 A005,人員名稱 為「路人甲」。 同步與更新: 儲存後,再次查看「臨時會」的簽到記錄。神奇的事情發生了!A005 旁邊的 人員名稱 自動更新為「路人甲」。
常見問題與解決方案:公式沒有生效?
檢查 Google Sheet: 直接打開後端的 Google Sheet,看看公式是否正確寫入,或者是否出現了 #N/A 或 #REF! 等錯誤。這能幫助你判斷問題是出在公式本身還是 AppSheet 的設定。 重新產生結構 (Regenerate Structure): 這是最重要的一步。當你變更了試算表的欄位結構後,必須告訴 AppSheet 重新讀取一次。 回到 AppSheet 編輯器 Data > Columns。 選擇你修改過的資料表(例如 簽到表)。 點擊右上方的 Regenerate Structure 按鈕。 AppSheet 會重新掃描你的試算表結構,並修正欄位對應關係。
這個動作通常能解決因為欄位變動而導致的公式錯誤。
總結
彈性極高: 可以在資料輸入後,根據其他資料表的變化動態更新內容。 功能強大: 能運用 Google Sheets 中所有你熟悉的複雜公式,而不僅限於 AppSheet 內建的表達式。 除錯直觀:可以直接在 Google Sheets 中看到公式的計算結果與錯誤訊息。
下次當你需要類似「先記錄,後更新」的應用場景時,不妨試試這個強大的功能!
沒有留言:
張貼留言
注意:只有此網誌的成員可以留言。