在開發 AppSheet 應用程式時,我們時常需要處理文字字串,並從中提取或生成新的資訊。今天我們要解決一個常見且實用的情境:如何自動化建立有連續數字區間的任務。
前言:情境與挑戰
高中7000單字表 第2級填空測驗 101-120 高中7000單字表 第2級填空測驗 121-140
核心功能:SPLIT() 與 INDEX() 函數介紹
SPLIT(text, separator) 功能:這個函數可以將一個文字字串,根據你指定的「分隔符號」,切割成一個清單(List)。 範例:SPLIT("161-180", "-") 會回傳一個包含兩個元素的清單:{"161", "180"}。
INDEX(list, position) 功能:這個函數可以從一個清單中,取出指定「位置」的元素。位置從 1 開始計算。 範例:承上例,INDEX(SPLIT("161-180", "-"), 1) 會回傳清單中的第 1 個元素,也就是文字 "161"。INDEX(..., 2) 則會回傳 "180"。
公式詳解:如何組合函數達成目標
SPLIT([WorkNote], "-") :取得目前這筆資料的 WorkNote 欄位值(例如 "161-180"),並用 - 切割成清單 {"161", "180"}。
INDEX(..., 1) 和INDEX(..., 2) :分別取出清單中的第一個值 "161"(起始數字)和第二個值 "180"(結束數字)。
NUMBER(...) + 20 和DECIMAL(...) + 20 :INDEX 取出的值是文字格式,無法直接進行數學運算。我們必須使用 NUMBER() 或 DECIMAL() 將其轉換為數字格式。 將轉換後的起始數字與結束數字各自加上我們的區間值 20。 161 + 20 得到 181。 180 + 20 得到 200。
CONCATENATE(...) :最後,使用 CONCATENATE() 函數將新的起始數字 181、分隔符號 "-"、以及新的結束數字 200 重新組合成新的文字字串 "181-200"。
LINKTOFORM(...) :這個函數會開啟名為 Work_Form 的表單。 "ProjectID", [ProjectID]: 將目前任務的 ProjectID 複製過去。 "WorkNote", ...: 將我們剛剛用 CONCATENATE 產生出的新區間 "181-200" 填入到新表單的 WorkNote 欄位中。
AppSheet 實作步驟
前往 Behavior > Actions 頁面。 點擊 + New Action 新增一個動作。 Action name: 命名為一個易於辨識的名稱,例如「複製新增(區間20)」。 For a record of this table: 選擇你的任務資料表(影片中為 Work)。 Do this: 選擇 App: go to another view within this app。 Target: 在這裡貼上我們上面詳解的 LINKTOFORM() 公式。 Appearance: 你可以設定這個按鈕的圖示 (Action icon) 與顯示名稱 (Display name)。 Behavior (選用): 你可以設定顯示條件 (Only if this condition is true),例如設定只有在任務完成後 (ISNOTBLANK([EndTime])) 才顯示這個複製按鈕,避免重複新增。
沒有留言:
張貼留言
注意:只有此網誌的成員可以留言。