2025年12月11日 星期四

HTML5 : 提升 Google 試算表查詢效率

2025年12月11日 星期四

教育部國語辭典可以在《教育部國語辭典公眾授權網》中下載匯出的文字資料,而且有提供試算表格式,只要上載到 Google 雲端硬碟,另存為 Google 試算格式,就可以使用 JSONP 的方式,將試算表當資料庫查詢。

在 HTML5 FUN 中,筆順練習、Partdle 和花瓣字均有使用到查詢字典的功能,《國語小字典》和《國語辭典簡編本》1140925版有 45194筆資料, 因為資料筆數較少,查詢的等待時間算可以接受,但是《重編國語辭典修訂本》1140923版有 163907筆資料,從十幾萬筆資料中撈出要用的,會明顯的感受到「等」!如果想將《重編本》的工作表複製到別的試算表,甚至會出現錯誤訊息而無法完成。

▋ 輕鬆建立小而美的工作表

昨天做了一個小實驗,原本在《重編本》的檔案中只有一個名稱為「1140923辭典匯出」的工作表,新增一個工作表,命名為「short」,並利用參照工作表「1140923辭典匯出」的方式來建立資料,把我想查詢的「字詞名」(A 欄)和「注音一式」(I 欄),用以下程序建立:

  • 游標移至「short」的儲存格 A1 
  • 輸入公式:='1140923辭典匯出'!A1
  • 游標移至「short」的儲存格 B1
  • 輸入公式:='1140923辭典匯出'!I1

公式如果正確,顯示的內容應該就跟「1140923辭典匯出」A1 與 I1 中的一樣了。

[圖1] Google 試算表表的參照與自動填滿

因為 Google 試算表的新工作表預設只會有 1000 列,而「1140923辭典匯出」中有的資料遠遠超過 1000 列,所以要先查一下要參照的工作表「1140923辭典匯出」有多少列資料,如前面提過的,這個版本有163907筆資料,所以 163907 - 1000 = 162907,需要在工作表「short」的最底部再新增 16290 列,努力的捲到底部,就可以看到輸入框了 [圖2],在裡面填入需要新增的列數。

[圖2] Google 試看表在底部新增多列

新增完所需要的列數,接下來可以準備使用魔法的快速按鍵「Ctrl + Enter」,幫我們自動填入資料了:

  • 游標移至「short」的儲存格 A1
  • 按一下上方的欄名「A」,可以選取整欄。
  • 按鍵盤「Ctrl + Enter」

成功的話,等一下下,A欄中應該就會將資料都自動填入空格了。

繼續「自動填滿」B 欄:

  • 游標移至「short」的儲存格 B1
  • 按一下上方的欄名「B」,可以選取整欄。
  • 按鍵盤「Ctrl + Enter」

成功的話,B 欄的所有空格應該也自動填入資料了。

▋ 比比看誰快

新建立的工作表「short」只有兩個欄位,來和完整版的工作表比較一下查詢所花費的時間,底下在四個不同帳號,分別在兩個工作表查詢 A 欄帶有「山」這個字的,並回傳國字、注音兩欄所花的時間(單位為千分之一秒):

✅ 工作表「short」(共2欄, 回傳 2欄, 找到 1038筆)

時間:  1691 , 筆數:  1038
時間:  1436 , 筆數:  1038
時間:  1264 , 筆數:  1038
時間:  1398 , 筆數:  1038

✅ 工作表「1140923辭典匯出」(共18欄, 回傳 2欄, 找到 1038筆)

時間:  4993 , 筆數:  1038
時間:  5137 , 筆數:  1038
時間:  4522 , 筆數:  1038
時間:  3584 , 筆數:  1038

只有兩欄的「short」很明顯地快多了。

來看看資料量較少的《簡編本》如何呢?

✅ 工作表「short」(共2欄, 回傳 2欄, 找到 137筆)

時間:  473 , 筆數:  137
時間:  624 , 筆數:  137
時間:  750 , 筆數:  137
時間:  525 , 筆數:  137

✅ 工作表「辭典匯出_1140925」(共15欄, 回傳 2欄, 找到 137筆)

時間:  1071 , 筆數:  137
時間:  1297 , 筆數:  137
時間:  1371 , 筆數:  137
時間:  1367 , 筆數:  137

《簡編本》如果查詢只有兩個欄位的「short」工作表,也可以比原來快很多。

實際應用在 HTML5 FUN 筆順練習和花瓣字中,可以讓程式更靈活了。哈!雖然使用者原來不見得感覺有在等待,畢竟程式在背景載入資料時,大伙兒都忙著操作別的呢!

▋ 相關連結


沒有留言:

張貼留言

 
雄::gsyan © 2009. Design by Pocket