iT邦幫忙

2024 iThome 鐵人賽

DAY 11
0
自我挑戰組

用 ODK 和 Access VBA 打造行動化資料收集流程系列 第 11

Day11: XLSForm設計教學:問題類型/資料類型(Question Types) Part 1

  • 分享至 

  • xImage
  •  

今天要開始講解 ODK Collect 支援的問題類型(type),而各問題類型,有些還有提供不同的外觀(appearance)設定,不同的外觀設定,造就了不同功能的小工具(Widgets),使用者可依照自己需求進行設定,這部分可在 XLSForm 的 survey 工作表中,透過 type 與 appearance 欄位進行定義。

如果希望查看所有問題類型的 XLSForm 表單,可以參考以下連結:
https://docs.google.com/spreadsheets/d/1af_Sl8A_L8_EULbhRLHVl8OclCfco09Hq2tqb9CslwQ

官方網站上的說明文件: https://docs.getodk.org/form-question-types/

同Day6一樣,我們這裡使用Google 試算表的範本(https://docs.google.com/spreadsheets/d/1v9Bumt3R0vCOGEKQI6ExUf2-8T72-XXp_CbKKTACuko) 作為教學,各位可以複製一份,然後實作後測試結果。


文字小工具(Text widgets)

可以出現輸入文字的欄位,輸入後的資料,將保存為文字字串。

注意:如果要保存超過255個字元,請於 XLSForm 的 survey 工作表中,增加一個 [bind::odk:length] 欄位,並設定要多少個字元,以便ODK Central的資料庫建立時,能夠變更預設欄位儲存空間。

預設文字小工具樣式:

  • [type]欄位: 選擇text
  • [appearance]欄位: 空白(後續文章如果沒有提到,就是空白)
type name label
text name 如何稱呼? 

https://ithelp.ithome.com.tw/upload/images/20240923/20007221BpsyYYlhAU.jpg

如果要要定義文字欄位最少顯示行數,可以於parameters 欄位加上「rows=數量」

type name label parameters
text name 如何稱呼?  rows=5

https://ithelp.ithome.com.tw/upload/images/20240923/20007221pHQyqRzU1p.jpg

數字文字小工具(Number text widgets)

  • [type]欄位: 選擇text
  • [appearance]欄位: 選擇numbers

類型為文字,但外觀設定為numbers(數字)後,輸入的資料只接受數字、連結符號(-號)、小數點與逗點分隔符號。這些對於建立電話、id、IP位址等資料十分有用。整數最多整數最多能輸入10位數,小數點後最多輸入15位數。

type name label appearance hint
text string_number 數字文字字串 numbers 文字類型與數字外觀

https://ithelp.ithome.com.tw/upload/images/20240923/200072212gdTthHSeZ.jpg
下方出現數字鍵盤

關於驗證:

注意,驗證的部份,需要再人工加上去,因為這是文字欄位,所以如果沒有驗證,則有可能連結符號、逗號、小數點放在很奇怪的位置,但是也能儲存,如果您只需要大於或等於零的數字(沒有小數分隔符號),則可於[constraint]欄位使用正規表示式(如 regex(.,'^[0-9]*$') )進行驗證。

type name label appearance hint constraint
text string_number_regex 數字文字字串 numbers 文字類型與數字外觀 regex(.,'^[0-9]*$')

https://ithelp.ithome.com.tw/upload/images/20240923/200072212MaqLPG88d.jpg

關於顯示千分位符號:

如果希望出現千分位的分隔符號(逗號),可以於[appearance]欄位加上 thousands-sep,但如果系統的地區數字設置,千分號使用點來(.)區隔的話,千分位顯示會改成空白,代替原本的逗號。

type name label appearance hint
text string_number_tsep 數字文字字串含千分位符號 numbers, thousands-sep 文字類型與數字外觀

https://ithelp.ithome.com.tw/upload/images/20240923/200072212ePVv9UHnr.jpg

外部程式字串小工具(External app string widget)

  • [type]欄位: 選擇text
  • [appearance]欄位: 輸入「ex:」開頭的內容。

這外觀設定,可以啟動外部應用程式,並接收從外部應用程式傳回的字串。如果指定的外部應用程式不可用,則提示手動輸入。當外觀屬性以 ex: 開頭時,將顯示外部應用程式工具。外觀字串的其餘部分指定要啟動的應用程式。
這裡我們用ODK Counter這個小程式當作範例,可以從Google Play進行安裝,完畢後透過下設定,就可以呼叫這個計數器軟體,來數數量,然後帶回ODK Collect表單中。

type name label appearance hint
text ex_string_widget 外部字串小工具 ex:org.opendatakit.counter 文字輸入使用 ex:org.opendatakit.counter 外觀 

https://ithelp.ithome.com.tw/upload/images/20240923/20007221OMkLog2xlm.jpg

https://ithelp.ithome.com.tw/upload/images/20240923/20007221tlGAoYuuIS.jpg

遮蔽文字(Masking the entered value)

  • [type]欄位: 選擇 text
  • [appearance]欄位: 選擇 masked

將masked加到appearance欄位,輸入資料時,可以顯示星號(*)效果,但沒有其他額外的保護效果。

type name label hint appearance
text string_masked  遮蔽文字  輸入文字有遮蔽效果 masked

使用此外觀的問題以及摘要畫面中的答案將保持隱藏狀態。但是,如果在標籤或計算中引用,它們將像任何其他值一樣可存取和顯示,沒有保護效果。

這外觀只能用在預設文字小工具(Default text widget)中屏蔽答案。它不適用於數位文字小工具(Number text widget)或數字小工具(Number widgets)。

https://ithelp.ithome.com.tw/upload/images/20240923/20007221CqP4sDuCX5.jpg


數字小工具(Number widgets)

數字小工具收集並儲存數字輸入,可以是整數或浮點小數。
另外也可以透過範圍小工具(Range widgets)用拖曳的方式選擇數值。

整數小工具(Integer widget)

  • [type]欄位: 選擇 integer

可輸入一個整數,不接受小數點,且輸入欄位的限制為九位數。
如果您需要大於九位數的數字,請參閱數字文字小工具( Number text widget)。

type name label
integer age  您年貴庚?

https://ithelp.ithome.com.tw/upload/images/20240923/20007221aBEChPZtHK.jpg

小數小工具(Decimal widget)

  • [type]欄位: 選擇 decimal

接受小數點的數字輸入。十進制數字輸入上限為 15 個字元(14 位數字和一個小數點)。如果您需要大於 15 位的數字,請參閱數字文字小工具。

type Name label
decimal Weight 請問體重?(公斤)

https://ithelp.ithome.com.tw/upload/images/20240923/20007221LvLt4PzQl7.jpg

千分位(Thousands separator)與外部工具取得數字(Number from an external app)

這邊跟之前介紹的外部字串輸入相同,可以參考前段說明。
https://ithelp.ithome.com.tw/upload/images/20240923/20007221lZflVDYNT8.jpg

https://ithelp.ithome.com.tw/upload/images/20240923/20007221Mb4OEzJJF7.jpg


時間與日期小工具(Date and time widgets)

預設日期選擇小工具(Default date widget)

  • [type]欄位: 選擇 date
type name Label hint
date date_widget 預設日期小工具  無設定任何外觀 

https://ithelp.ithome.com.tw/upload/images/20240923/20007221V5a9KpQjNv.jpg

https://ithelp.ithome.com.tw/upload/images/20240923/200072212fTG5WRpac.jpg

旋調日期選擇小工具(Date widget with spinner input)

  • [type]欄位: 選擇 date
  • [appearance]欄位: 選擇 no-calendar

no-calendar 外觀,會帶出旋轉樣式的日期選擇器,而非一般的日曆,這特別適合用於選擇前後超過一年以上的日期,因為可以快速切換年、月、日欄位。

type Name label appearance Hint
date date_widget_nocalendar Date Widget no-calendar  使用no-calendar 外觀 

https://ithelp.ithome.com.tw/upload/images/20240923/20007221xnPln2jaIP.jpg

僅選擇年月(Month and year only)

  • [type]欄位: 選擇 date
  • [appearance]欄位: 選擇 month-year

與no-calendar 外觀類似,只差在沒有「日」的選項,只有「年」與「月份」。

type Name label appearance hint
date date_widget_month_year Date widget month-year 日期類型,使用month-year 外觀

https://ithelp.ithome.com.tw/upload/images/20240923/20007221GsM5cUlLRo.jpg

僅選擇年份(Year only)

  • [type]欄位: 選擇 date
  • [appearance]欄位: 選擇 year

與no-calendar 外觀類似,但只有「年」的旋鈕。

https://ithelp.ithome.com.tw/upload/images/20240923/20007221BDN3cK9v7m.jpg

其他日曆資料輸入(Date widgets with non-Gregorian calendars)

ODK的日期選擇功能,有多種特殊日曆外觀可以選擇,可透過appearance欄位,輸入: Coptic、ethiopian、islamic、bikram-sambat、myanmar、persian 來選擇不同的日曆外觀,但這幾種對台灣來說幾乎用不到,好奇的可以自己玩看看。

時間小工具(Time widget)

  • [type]欄位: 選擇 time

時間選擇器,用於輸入一天中的特定時間,不包含日期。時間小工具無任何外觀屬性可用。

時間小工具儲存時間和時區資訊。這可能會導致夏令時期間出現意外行為。 例如,如果您記錄時鐘變更之前的時間,然後查看時鐘變更之後的時間,則會顯示相差一小時。發生這種情況是因為記錄的時間資料被理解為被「翻譯」到您當前的本地時區的特定時刻。 在地理時區之間移動時也會出現類似的問題。

這使得時間小工具不適合抽象的時間問題,例如您通常幾點起床?對於這樣的問題,您可能需要使用最小選擇小工具( Minimal select widget.)。您可以將選項設定為所需的任何精確度級別,例如 15分鐘 或 30 分鐘,或者可以使用選擇小工具選擇小時,然後使用整數小工具( Integer widget)選擇分鐘,而不是使用時間小工具。

type Name Label
time worktime 今天幾點上班?

https://ithelp.ithome.com.tw/upload/images/20240923/200072217mGLfxM6zg.jpg

日期時間小工具(Datetime widget)

  • [type]欄位: 選擇 datetime

把日期與時間的選擇合併再一起,可以選擇日期與時間。

type name Label
datetime date_time 請問事件日期與時間?

https://ithelp.ithome.com.tw/upload/images/20240923/20007221YB4QImOFyn.jpg


上一篇
Day10: 設置問卷使用權限與
下一篇
Day12: XLSForm設計教學:問題類型/資料類型(Question Types) Part 2
系列文
用 ODK 和 Access VBA 打造行動化資料收集流程30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言