計時器: 0:00
您可以建立自己的 Google 試算表作為打字練習的題庫。請依照以下步驟設定:
<script> // --- 設定區 --- // vvv 請將您發佈的 Google Apps Script 網頁應用程式網址貼在這裡 vvv const gasUrl = "請用您自己的網址取代這裡"; // <--- 就是改這裡 // ^^^ 請將您發佈的 Google Apps Script 網頁應用程式網址貼在這裡 ^^^ // --- 結束設定區 --- ... </script>
// 當網頁透過 GET 方式請求時會執行的主要函式 function doGet(e) { // 每次被存取時,都先檢查試算表和工作表是否已正確設定 setupSheet(); // 取得所有題庫資料 const data = getQuestionBanks(); // 取得 JSONP 的回呼函式名稱 const callback = e.parameter.callback; // 如果有回呼函式名稱 (代表是 JSONP 請求),就回傳 JSONP 格式 if (callback) { return ContentService .createTextOutput(callback + '(' + JSON.stringify(data) + ')') .setMimeType(ContentService.MimeType.JAVASCRIPT); } else { // 否則,回傳一般的 JSON (加上 CORS 標頭以供其他用途) return ContentService .createTextOutput(JSON.stringify(data)) .setMimeType(ContentService.MimeType.JSON) .withHeaders({ "Content-Type": "application/json; charset=utf-8", "Access-Control-Allow-Origin": "*", }); } } // 取得所有題庫資料的函式 function getQuestionBanks() { try { const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("題庫"); // 如果工作表不存在或沒有資料,回傳空陣列 if (!sheet || sheet.getLastRow() <= 1) { return { success: true, data: [] }; } // 取得工作表中除了標頭以外的所有資料 const data = sheet.getRange(2, 1, sheet.getLastRow() - 1, 2).getValues(); // 將二維陣列轉換為物件陣列,方便前端使用 const questionBanks = data.map(row => { // 過濾掉沒有名稱或內容的空行 if (row[0] && row[1]) { return { name: row[0].toString().trim(), text: row[1].toString().trim() }; } return null; }).filter(item => item !== null); // 移除空項目 return { success: true, data: questionBanks }; } catch (error) { // 如果發生錯誤,回傳包含錯誤訊息的物件 return { success: false, message: "讀取試算表時發生錯誤: " + error.message }; } } // 初始化設定試算表的函式 function setupSheet() { const spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); const sheetName = "題庫"; let sheet = spreadsheet.getSheetByName(sheetName); // 如果找不到名為 "題庫" 的工作表,就建立一個並填入範例資料 if (!sheet) { sheet = spreadsheet.insertSheet(sheetName); // 設定欄位標頭 const headers = [["題庫名稱", "參照文字"]]; const headerRange = sheet.getRange(1, 1, 1, 2); headerRange.setValues(headers); headerRange.setFontWeight("bold"); // 將標頭設為粗體 sheet.setColumnWidth(1, 200); // 設定第一欄寬度 sheet.setColumnWidth(2, 600); // 設定第二欄寬度 // 新增一些範例資料 sheet.getRange(2, 1, 2, 2).setValues([ ["範例文章一:岳陽樓記", "慶曆四年春,滕子京謫守巴陵郡。越明年,政通人和,百廢具興。乃重修岳陽樓,增其舊制,刻唐賢今人詩賦於其上。屬予作文以記之。"], ["範例文章二:網路佳句", "我們最大的恐懼不是我們不夠好,我們最大的恐懼是我們超乎想像的能力。我們害怕的不是我們的黑暗面,而是我們的光明面。"] ]); } }
為了方便初學者或需要對照注音的學生,本工具提供了特殊的「注音字體」顯示模式。
?f=o
來預設開啟此模式。在 Windows 或 macOS 中,切換中文輸入法後,您可以使用快速鍵 Shift
+ Space
(空白鍵) 來切換全形與半形模式。
建議:進行本打字練習時,為了與參照文字的標點符號格式一致,請務必使用全形模式輸入標點符號。
在中文注音輸入法的全形模式下,您可以透過組合鍵輸入對應的標點符號。常見符號如下:
符號 | 名稱 | 方法1 ( ` 系列) |
方法2 ( Ctrl 系列) |
方法3 ( Ctrl+Alt+, 系列) |
---|---|---|---|---|
, | 逗號 | ` + , | Ctrl + , | Ctrl +Alt +, 再按 , |
。 | 句號 | ` + . | Ctrl + . | Ctrl +Alt +, 再按 m |
、 | 頓號 | ` + ' | Ctrl + ' | Ctrl +Alt +, 再按 ' |
; | 分號 | ` + ; | Ctrl + ; | Ctrl +Alt +, 再按 ; |
: | 冒號 | ` + Shift +; | Ctrl + Shift +; | Ctrl +Alt +, 再按 l |
? | 問號 | ` + Shift +/ | Ctrl + Shift +/ | Ctrl +Alt +, 再按 / |
! | 驚嘆號 | ` + Shift +1 | Ctrl + Shift +1 | Ctrl +Alt +, 再按 k |
‧ | 間隔號 | ` +. +↓ 選擇 | Ctrl +. +↓ 選擇 | Ctrl +Alt +, 再按 . |
「『 [【《 | 前引號 夾注號 | ` +[ +↓ 選擇 | Ctrl +[ +↓ 選擇 | Ctrl +Alt +, 再按 = ,0 ,o ,t ,u |
」』 ]》】 | 後引號 夾注號 | ` +] +↓ 選擇 | Ctrl +] +↓ 選擇 | Ctrl +Alt +, 再按 \ ,- ,p ,y ,i |
-… →← | 連接號 刪節號 | ` +- +↓ 選擇 | 無 | Ctrl +Alt +, 再按滑鼠點選 |