星期五, 5月 30, 2025

剴剴案之高風險兒童不定期查訪建議

我是個社工師,下面説明是我和GPT討論有關高風險兒童不定期查訪草案,前陣子剴剴案不能沒有後續改善,監察院也善對雙北市政府,兒童福利聯盟糾正了,希望不是今日公祭😃明日忘記。

#剴剴案 #高風險兒童 #兒童保護

高風險兒童查訪制度建議草案

一、目的與背景

本建議草案旨在提出一套能有效保障高風險兒童(包括身障兒童、教養院兒童、待收養兒童等)安全的查訪制度,並確保每一位兒童的基本生存與發展需求得到應有的照顧,避免因制度疏漏而造成悲劇性事件的發生。

二、高風險兒童定義與優先查訪名單

1. 等待收出養的兒童

2. 身心障礙兒童

3. 教養院安置兒童

4. 曾有虐待或疏忽紀錄的兒童

5. 單親或隔代教養且經濟弱勢的家庭兒童

6. 多次搬遷、失聯、無穩定居住的兒童

7. 接受私人托育、寄養家庭照顧,無穩定第三方監督的兒童

8. 家長或照顧者有精神疾病、藥酒癮等未穩定治療的兒童

9. 學校、醫療機構或社福機構曾通報的有異常行為、傷痕的兒童

三、查訪人員構成

查訪人員應具備專業背景及多元化組合,並經過專業訓練。具體來源可包括:

1. 公部門兒童保護單位社工

2. 醫療院所的兒科護理師、醫生

3. 特教老師與心理師

4. 經過認證的兒少關懷志工

5. 具有經驗的退休社工、醫護人員等

四、查訪人員訓練內容

查訪人員必須經過全面、定期的專業訓練,以確保查訪能夠發現問題及處理,訓練內容包括但不限於:

1. 辨識兒童受虐、疏忽、性侵跡象

2. 身心障礙兒童的特殊需求與表現特徵

3. 學習傾聽與觀察兒童非語言訊號

4. 基礎法律知識(兒童及少年法、家暴法等)

5. 查訪倫理與技巧

6. 緊急通報流程與應急處理指導

7. 交叉比對技巧(問孩子、問照顧者、看環境)

五、查訪頻率與方式

1. 高風險兒童:每月至少一次不定期查訪。

2. 中低風險兒童:每半年一次不定期抽查。

3. 查訪方式:

實地訪查,進入居住或托育機構環境。

孩子身體、情緒狀況的直接觀察。

與照顧者及孩子單獨交談,確保無人為隱瞞。

必要時,協助進行心理與健康篩查。

六、通報與後續處理

查訪人員在發現異常情況後,應立即啟動快速反應機制,通報相關社會福利機構、醫療單位或警方,確保孩子立即獲得保護。

後續追蹤:對已被通報或查訪過的案件,應建立定期追蹤機制,以確保問題徹底解決,並對照顧者進行必要的輔導與協助。

七、制度落實與資源保障

1. 資源投入:必須為高風險兒童查訪制度提供足夠的人力、物力與財力支持,包括適當的查訪工具、交通補助等。

2. 跨部門協調:各相關單位(衛福部、教育部、地方政府等)應加強協調合作,確保查訪工作順利進行。

3. 定期檢討與改進:每年應進行評估與改進,確保查訪效果。

星期六, 4月 12, 2025

用 Google Sheets 自動追蹤你想看的新聞:以台積電為例,修改 Apps Script 實戰教學

用 Google Sheets 自動追蹤你想看的新聞:以台積電為例,修改 Apps Script 實戰教學 發布時間: 2025年 4月 12日 地點: 台灣新北市 你是不是常常需要關注特定公司、主題或人物的最新新聞?每天手動搜尋是不是覺得有點煩人?其實,你可以利用 Google Sheets 和一點點程式魔法,讓試算表自動幫你收集整理相關新聞! 先前我們可能已經建立了一個 Google Apps Script,用來追蹤像是「川普 關稅」這樣的主題。但如果你想追蹤的目標改變了呢?例如,你現在更關心的是台灣的護國神山——「台積電」(TSMC)的動態。 別擔心!修改現有的 Apps Script 並不難。這篇文章將一步步帶你把原本的腳本修改成專門追蹤「台積電」新聞的利器。 
我們需要什麼工具? * Google Sheets: 我們的老朋友,資料的家。 * Google Apps Script (GAS): Google 提供的免費雲端腳本平台,可以用 JavaScript 語法操作 Google Workspace 的各種服務(包括 Sheets)。 * Google News RSS Feed: 我們將透過構造一個 Google News 的 RSS Feed 網址來獲取結構化的新聞資料,這比直接爬取網頁更穩定。 
修改腳本:讓它聚焦台積電 假設你已經有了一個先前用來追蹤其他主題的 Apps Script 程式碼。現在,我們要動手修改它,讓它開始為我們關注「台積電」。 
主要修改點: * 修改搜尋關鍵字 (SEARCH_TERMS): 這是最核心的改動。找到定義搜尋關鍵字的變數,把它改成 "台積電"。 // 原本可能是: // var SEARCH_TERMS = "Trump tariffs"; // 修改為: var SEARCH_TERMS = "台積電"; * 更新 RSS Feed 網址 (RSS_URL): 光改關鍵字還不夠,為了獲得最相關的中文新聞,我們需要調整 RSS 網址中的語言 (hl) 和地區 (gl) 參數。 // 原本可能是美國英文新聞的網址: // var RSS_URL = "https://news.google.com/rss/search?q=" + encodeURIComponent(SEARCH_TERMS) + "&hl=en-US&gl=US&ceid=US:en"; // 修改為台灣繁體中文新聞的網址: var RSS_URL = "https://news.google.com/rss/search?q=" + encodeURIComponent(SEARCH_TERMS) + "&hl=zh-TW&gl=TW&ceid=TW:zh-Hant"; * hl=zh-TW:指定語言為繁體中文。 * gl=TW:指定地區為台灣。 * ceid=TW:zh-Hant:對應的識別碼。 * (建議) 更改工作表名稱 (SHEET_NAME): 為了讓你的 Google Sheet 保持整潔,建議幫存放台積電新聞的工作表取個新名字。 // 原本可能是: // var SHEET_NAME = "新聞"; // 修改為: var SHEET_NAME = "台積電新聞"; * (建議) 更改函數名稱: 原本的函數名稱可能反映的是舊主題(例如 findTrumpTariffNews)。為了可讀性,最好改成與新主題相關的名稱。注意:改了函數名,後面的觸發條件也要跟著改! // 原本可能是: // function findTrumpTariffNews() { ... } // 修改為: function findTsmcNews() { ... } 別忘了,函數內部的錯誤記錄 Logger.log 或郵件通知訊息也可以順便更新一下,讓它們更符合現在的功能。 

____________________
更新後的完整程式碼範例, 這裡提供整合上述修改的完整 Apps Script 程式碼,你可以直接複製使用: 
// --- 設定 --- var SEARCH_TERMS = "台積電"; // *** 修改:設定新的搜尋關鍵字 *** var SHEET_NAME = "台積電新聞"; // *** 建議修改:設定新的工作表名稱 *** var MAX_RESULTS_TO_CHECK = 50; // 每次檢查 RSS Feed 中的前 N 筆資料 var LINK_COLUMN_INDEX = 3; // 連結在哪一欄 (A=1, B=2, C=3...),用來檢查重複 // *** 修改:更新 RSS Feed URL,使用新的搜尋關鍵字,並設定為台灣繁體中文新聞 *** var RSS_URL = "https://news.google.com/rss/search?q=" + encodeURIComponent(SEARCH_TERMS) + "&hl=zh-TW&gl=TW&ceid=TW:zh-Hant"; /** * *** 建議修改:主要函數名稱 *** * 主要函數:擷取、解析並將台積電新聞寫入試算表 */ function findTsmcNews() { // *** 修改:函數名稱 *** try { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetByName(SHEET_NAME); // 使用更新後的工作表名稱 // 如果工作表不存在,則建立它並加入標頭 if (!sheet) { sheet = ss.insertSheet(SHEET_NAME); sheet.appendRow(["擷取時間", "標題", "連結", "發布日期"]); SpreadsheetApp.flush(); Logger.log("已建立工作表 '%s' 並加入標頭。", SHEET_NAME); } var existingLinks = getExistingLinks(sheet); Logger.log("目前工作表 '%s' 中有 %s 個連結可供比對。", SHEET_NAME, existingLinks.size); Logger.log("正在從 RSS Feed 擷取關於 '%s' 的新聞: %s", SEARCH_TERMS, RSS_URL); var response = UrlFetchApp.fetch(RSS_URL, { muteHttpExceptions: true }); var responseCode = response.getResponseCode(); var xmlContent = response.getContentText(); if (responseCode !== 200) { Logger.log("錯誤:無法擷取 RSS Feed。狀態碼: %s, 回應: %s", responseCode, xmlContent); return; } var document = XmlService.parse(xmlContent); var root = document.getRootElement(); var channel = root.getChild('channel'); var items = channel.getChildren('item'); Logger.log("在 RSS Feed 中找到 %s 個項目。", items.length); var newItemsAdded = 0; var itemsToCheck = Math.min(items.length, MAX_RESULTS_TO_CHECK); for (var i = 0; i < itemsToCheck; i++) { var item = items[i]; var title = item.getChild('title').getText(); var link = item.getChild('link').getText(); var pubDateText = item.getChild('pubDate') ? item.getChild('pubDate').getText() : "N/A"; var fetchTimestamp = new Date(); if (!existingLinks.has(link)) { sheet.appendRow([ Utilities.formatDate(fetchTimestamp, Session.getScriptTimeZone(), "yyyy-MM-dd HH:mm:ss"), title, link, pubDateText ]); Logger.log("新增新聞: %s", title); newItemsAdded++; existingLinks.add(link); } } if (newItemsAdded > 0) { Logger.log("已新增 %s 則關於 '%s' 的新聞到 '%s' 工作表。", newItemsAdded, SEARCH_TERMS, SHEET_NAME); } else { Logger.log("沒有找到關於 '%s' 的新新聞項目。", SEARCH_TERMS); } } catch (error) { Logger.log("執行 findTsmcNews 時發生錯誤: %s", error); Logger.log("錯誤堆疊: %s", error.stack); } } /** * 輔助函數:從工作表中讀取現有連結,用於去重 */ function getExistingLinks(sheet) { var linkSet = new Set(); var lastRow = sheet.getLastRow(); if (lastRow > 1) { var range = sheet.getRange(2, LINK_COLUMN_INDEX, lastRow - 1, 1); var values = range.getValues(); for (var i = 0; i < values.length; i++) { if (values[i][0]) { linkSet.add(values[i][0].toString().trim()); } } } return linkSet; } /** * (可選) 函數:如果需要,可以用來手動設定標頭 */ function setupSheet() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetByName(SHEET_NAME); // 使用更新後的工作表名稱 if (!sheet) { sheet = ss.insertSheet(SHEET_NAME); } sheet.clearContents(); sheet.appendRow(["擷取時間", "標題", "連結", "發布日期"]); sheet.getRange("A1:D1").setFontWeight("bold"); SpreadsheetApp.flush(); Logger.log("工作表 '%s' 已設定標頭。", SHEET_NAME); } 
________________________
如何實施? 
* 打開編輯器: 前往你的 Google Sheet,點擊「擴充功能」->「Apps Script」。 * 取代程式碼: 將編輯器裡舊的程式碼全部刪除,貼上上面提供的新程式碼。 * 儲存: 點擊儲存圖示。 * 測試運行: 在編輯器頂部的函數下拉選單中,選擇你剛剛修改的函數名稱(例如 findTsmcNews),然後點擊旁邊的「▶ 執行」按鈕。檢查你的 Google Sheet 是否出現了新的工作表(如果設定了新名稱)和相關的台積電新聞。 * 更新觸發條件(關鍵步驟!): * 點擊左側選單的「觸發條件」(時鐘圖案)。 * 找到你之前設定的時間驅動觸發條件(例如每小時執行一次)。 * 點擊編輯(鉛筆圖示)。 * 務必確認「選擇要執行的功能」已經指向你修改後的 新函數名稱(例如 findTsmcNews)。 如果這裡還是舊的函數名稱,自動化就會失效或繼續跑舊主題! * 儲存觸發條件的變更。 大功告成!
 完成這些步驟後,你的 Google Sheet 就會開始自動為你收集最新的台積電新聞了!你可以隨時打開試算表查看,甚至在手機上也能輕鬆閱讀。 這個方法當然也可以應用於追蹤任何你感興趣的公開新聞主題。只要修改 SEARCH_TERMS 和可能的 RSS_URL 地區語言設定,你就能打造自己專屬的自動化新聞監控站! #TSMC @台積電

星期一, 1月 27, 2025

有關0121地震

這次一月21日的地震,台南的玉井,楠西有不少房屋受損嚴重,雖然沒有太多人受傷,但後續的安置是很重要的事。 有不少民間團體是自動到當地協助提供物資,這當然也是有很多善心人士的促成,我想如果這些當地民眾的聲音是很微弱的話,不會有太多人注意到,這時當地政府人員的工作就很重要了。 我在想現在正在推動大罷免的熱潮,可能很少有立委會關心到這些民眾,但是如果因為對於預算的删減而影響了這些民眾能夠恢復正常生活的權益,這樣就真的使政治會影響了一般人的生活了。 希望之後在選舉時,民眾都能夠選出真正關心人民權益的人,每一票都投下最正確的選擇。