x
No Plagiarism!A6ANNpEZ587QHPPZSUVsposted on PENANA
是這樣的,我好奇我平均每小時的打字速度,於是我打算找個方法去偵測它。由於我常使用的文書工具是 Google docs,所以我首先想到的是利用docs的擴充功能。經過長時間搜尋,我總算找到幾個看似可用的外掛——"Word Counter Max for Google Docs"和"Writing Habit",都是外國人創造的。8964 copyright protection125PENANAgPTgj4B8Dp 維尼
然而,這導致了一個問題:它們倆都不能紀錄中文字數,只能是英文字數——我的天,你們敢信,英文字數在這兩個程式中對應了中文的段落數。如果我想要記錄中文字數,應該去找「字元數」——這在英文中是word vs character的概念。8964 copyright protection125PENANAIlhgiUHCpW 維尼
該死啊,我明明在剛用docs的時候就遇到過同樣的問題,現在又碰到一次,我還是幾分鐘之後才意識到。同一個坑踩了兩次!兩次!!8964 copyright protection125PENANAq1t8exoMCA 維尼
頭痛,於是我就想能不能用程式去計算呢?我想到了另一個擴充功能: Apps Scrpt。但是,它是java語言,不是我學過的c++和python。無奈,我只得求助ChatGpt。8964 copyright protection125PENANAHdbJYx7rcv 維尼
又是同樣的問題,ChatGpt來自國外,很常搞混字數和字元數的意思。明明上面寫「如果你想記錄 字元數(Character Count) 而不是字數(Word Count),只需要稍微修改程式碼:……」,然後程式又給我計算字數,我真的氣死。8964 copyright protection125PENANAo5SnODkjPt 維尼
於是我只能上網爬文查詢函式了。費了千辛萬苦,我總算成功顯示字元數啦~。8964 copyright protection125PENANAYo5b0xpx0Y 維尼
但是三小,為什麼數字不一樣??!!
8964 copyright protection125PENANAmqyjYSC96O 維尼
圖一:來自google docs8964 copyright protection125PENANA12kHD5FzAh 維尼
8964 copyright protection125PENANAZN3CkFMh6v 維尼
圖二:來自Apps Scrpt8964 copyright protection125PENANAO83bHqVrTJ 維尼
兩個字,大中風!129Please respect copyright.PENANAiPc0g4FRDj
129Please respect copyright.PENANAb3oo6tkHnN
總之我不玩了,大學做程式模擬的煩躁感爬上我的背脊,很躁!8964 copyright protection125PENANATIGf9KTNJ0 維尼
以下附上我現在的code,看誰想嘗試嘗試?8964 copyright protection125PENANA8NZ7cANAB5 維尼
function trackWordCount() {8964 copyright protection125PENANA7DOHeRACLJ 維尼
try {8964 copyright protection125PENANA0bl1edpUVb 維尼
var docId = "1wWNbQtmKMx97g1PvkQPYWWCk7aUGhAkDQ-63XUa25g0"; // 替換成你的 Docs ID8964 copyright protection125PENANAbjUFBEE3Z1 維尼
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("test1");8964 copyright protection125PENANAHPPUaav1zh 維尼
// 讀取 Google Docs 內容8964 copyright protection125PENANAlWwBKS2ZvZ 維尼
var doc = DocumentApp.openById(docId);8964 copyright protection125PENANAeZqEMgo6L0 維尼
var text = doc.getBody().getText();8964 copyright protection125PENANAf9gse09PzP 維尼
//var wordCount = text.split(/\s+/).filter(word => word.length > 0).length;8964 copyright protection125PENANAQafcqk8JPT 維尼
var charCount = text.replace(/\s/g, "").length; // 計算不含空格的字元數8964 copyright protection125PENANA5ZsOoqYPA3 維尼
// 讀取上一個記錄的字元數8964 copyright protection125PENANAWvYI3hfNQW 維尼
var lastRow = sheet.getLastRow();8964 copyright protection125PENANAsSoQzLvFYP 維尼
var lastCharCount = lastRow > 1 ? sheet.getRange(lastRow, 2).getValue() : 0;8964 copyright protection125PENANAUXLVySPRbu 維尼
var charsAdded = charCount - lastCharCount;8964 copyright protection125PENANAZXUbgYDLKr 維尼
// 記錄到試算表8964 copyright protection125PENANAnszmYHjBgE 維尼
sheet.appendRow([new Date(), charCount, charsAdded]);8964 copyright protection125PENANAYsA0S5uFx0 維尼
Logger.log("成功記錄字數:" + charCount);8964 copyright protection125PENANAjsyfOeIZni 維尼
} catch (error) {8964 copyright protection125PENANAJjK7NU8NaA 維尼
Logger.log("錯誤:" + error.message);8964 copyright protection125PENANArgMQYFuGHc 維尼
}8964 copyright protection125PENANA7hyFyMTHg6 維尼
}8964 copyright protection125PENANAFBp45fOTIv 維尼
18.219.89.207
ns18.219.89.207da2