iT邦幫忙

0

【kintone免費外掛活用】利用「進階Lookup外掛」做出台灣縣市道路階層選擇效果

  • 分享至 

  • xImage
  •  

kintone 可以透過外掛程式擴充應用程式的功能。除了第三方廠商開發販售的外掛之外,Cybozu 台灣也針對在地客戶提供了多款免費外掛,讓使用者不需額外花費也能導入實用的解決方案。

在【kintone免費外掛活用】系列文章中,我們將介紹目前提供中的免費外掛及其實際應用範例,供大家參考。若有需求,可洽詢您的業務負責人或授權經銷商協助申請使用。

這次要介紹的是「進階Lookup外掛(Advanced Lookup Plug-in)」,以及如何運用此外掛實現「縣市 → 行政區 → 道路」的階層選擇效果。

情境

「地址」是許多應用中常見的資料欄位。若在輸入時能提供階層式的下拉選單,讓使用者先選縣市、再選行政區、最後選擇道路,不僅能加快輸入速度,也能有效降低輸入錯誤的風險。

然而,kintone 的原生下拉選單並不支援階層關聯的設定。若要實現如上圖所示的效果,就必須透過客製化或搭配外掛來完成。

解決方案

雖然 Cybozu 台灣目前沒有提供階層式的下拉選單的外掛,但是可以透過「進階Lookup外掛」,搭配行政區與道路資料管理的應用程式,以 Lookup 的方式取得鄉鎮市區與路名資料,來達成類似的效果。

使用的外掛

  • 進階Lookup外掛(Advanced Lookup Plug-in)

必要的應用程式

  • 主應用程式:需要輸入地址資料的主要應用程式,需要在此應用中加入「進階Lookup外掛」。
  • 資料來源應用程式
    • 台灣鄉鎮市區資料
    • 台灣道路資料

首先,必須建立「台灣鄉鎮市區」以及「台灣道路」兩個應用程式,用來管理選項用資料。

台灣鄉鎮市區資料

需要包含三個「單行文字方塊」:

  • city:縣市。設為必填。
  • site:鄉鎮市區。設為必填。
  • site_id:縣市+鄉鎮市區。設為必填,並且設定為唯一值,作為 Lookup 時的索引鍵欄位。

台灣道路資料

一樣需要包含三個「單行文字方塊」:

  • site_id:縣市+鄉鎮市區。設為必填。
  • road:路名。設為必填。
  • road_id:縣市+鄉鎮市區+路名。設為必填,並且設定為唯一值,作為 Lookup 時的索引鍵欄位。

資料來源

政府資料開放平臺-全國路名資料:
https://data.gov.tw/dataset/35321

台灣全國路名資料可自政府資料開放平臺取得,請先從該平臺下載最新年份的 CSV 資料。下載後的資料如下圖:

資料一共有三欄:

  • city:縣市
  • site_id:縣市+鄉鎮市區
  • road: 路名

我們需要將這份資料依照以上兩個資料來源應用程式的格式,整理成兩份 CSV 後再匯入。

整理鄉鎮市區資料

STEP 1:取出不重複的 site_id

首先,我們要先整理出不重複的 site_id
在 Excel 中,可以使用 UNIQUE 函數快速取得唯一值:

=UNIQUE (陣列,[by_col],[exactly_once])

其中 [by_col][exactly_once] 為選填參數,這裡我們只需要從原始的 site_id 欄位取值即可,因此公式如下:

=UNIQUE(B:B)

得到不重複的 site_id 後,請將結果整欄複製並在新的一欄「貼上值」,確保公式結果轉為靜態文字。
完成後,即可刪除多餘欄位,只保留乾淨的唯一 site_id 清單,方便後續處理。

💡 清除「東/西/南/北區」中間的全形空格(非必要)

在原始資料中,「東區」「西區」「南區」「北區」之間含有全形空格。
若希望清除這些多餘的空格,可以使用 Excel 的「全部搜尋/取代」功能:
搜尋全形空格,取代欄位留白不填,然後執行「全部取代」,即可一口氣移除空格。

STEP 2:拆分 citysite 資料

接著,我們要將縣市名稱與鄉鎮市區名稱分別獨立出來。
縣市名稱 (city) 結構相對單純,皆為三個字,因此可以使用 LEFT 函數擷取前三個字作為縣市名稱。

=LEFT(儲存格, 取得字元數)

由於資料從第二列開始,所以可在 B2 儲存格中輸入以下公式:

=LEFT(A2, 3)

再點擊右下角填滿柄(小方塊)兩下,Excel 就會自動將公式套用至整欄,快速帶出每列的縣市名稱。

至於鄉鎮市區 (site),因字數長度不固定,因此可搭配 LENRIGHT 函數。
先用 LEN 取得字串總長度,扣除前三個字(縣市名),再用 RIGHT 取出剩下的部分。公式如下:

=RIGHT(A2, LEN(A2)-3)

完成後,即可得到如下結果:

回到剛才建立的「台灣鄉鎮市區」應用中,匯入整理好的 csv 檔:

整理路名資料

原始資料中已經有 site_id 以及 road 資料,所以只需要將這兩個字串結合,即為 road_id

重新開啟原始資料,刪去不需要的 city 欄,並以 CONCATENATE 函數結合縣市鄉鎮市區以及路名,範例公式如下:

=CONCATENATE(A2,B2)

完成後的資料如下:

回到「台灣道路資料」應用中,匯入整理好的 CSV,來源資料的前置準備就大功告成了!

主應用設定

完成來源資料的準備後,就可以進入主應用的設定階段。

STEP 1:建立縣市下拉選單

首先,在表單中新增一個「下拉式選單」欄位,輸入台灣所有縣市名稱。

💡 小訣竅:
可在原始資料中使用 UNIQUE 函數,從 city 欄位取出不重複的縣市清單,直接複製並貼到選項設定中,即可快速建立所有縣市選項。

STEP 2:建立「選擇鄉鎮市區」、「選擇道路」Lookup 欄位

建立以下兩個 Lookup 欄位:

  1. 選擇鄉鎮市區
  2. 選擇道路
選擇鄉鎮市區

來源應用程式選擇「台灣鄉鎮市區資料」,索引鍵設定為 site_id
若需要僅顯示鄉鎮市區名稱的欄位,可另外新增單行文字欄位,並在欄位對應中帶入 site 欄位。

選擇道路

來源應用程式選擇「台灣道路資料」,索引鍵設定為 road_id
若需要僅顯示路名的欄位,同樣可新增單行文字欄位,並在欄位對應中帶入 road 欄位。

STEP 3:設定外掛

最後,在應用程式的外掛設定中,新增「進階Lookup外掛」並依下圖進行設定後保存:

完成效果示範

設定完成後,「選擇鄉鎮市區」會依照所選的「縣市」自動篩選出對應資料,而「選擇道路」則會再根據「選擇鄉鎮市區」的值動態篩選,實現階層式選單的互動效果。

除了地址輸入外,這種階層選單的做法也非常適合應用在其他情境,例如:

  • 商品分類(主分類 → 次分類 → 品項)
  • 組織架構(公司 → 部門 → 員工)

希望這篇文章能帶給你一些靈感,善用免費外掛,讓你的 kintone 更聰明、更好用!


圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言