2025年4月5日 星期六

【Google 教學】告別手動更新!讓 Google 表單訂單金額在試算表中自動計算


一、 前言

  • 痛點引入: 使用 Google 表單製作訂購單或報名表很方便,但每次收到新回覆,都要手動到試算表更新總金額公式嗎?

  • 問題深化: Google 表單新增回覆時常「插入新列」,導致手動下拉的公式失效或錯位,需要不斷重新調整。

  • 解決方案預告: 介紹 Google 試算表的 ARRAYFORMULA 函數,只需設定一次,即可自動計算所有新進訂單的總額。

  • 本文目標: 教學如何使用 ARRAYFORMULA 解決自動計算問題,省時又不易出錯。

二、 為何手動拉公式會失敗?惱人的痛點說明

  • 常見做法: 在試算表「總價」欄位輸入公式(如 =C2*D2),然後手動向下拖曳填滿。

  • 失敗原因:

    • Google 表單提交新回覆時,預設行為是插入新的一列,而非附加在最下方。

    • 插入列會導致原先已下拉填滿的公式列被推擠下去,新插入的列沒有公式,無法計算。

    • 使用者需要不斷檢查並重新複製貼上公式。

  • 額外困擾: 預先下拉太多公式,沒有資料的儲存格會顯示多餘的「0」。

三、 解決方案:陣列函式 ARRAYFORMULA 登場!

  • 函數介紹: 說明 ARRAYFORMULA 的基本功能 - 將單一公式應用於整個範圍或陣列。

  • 核心優勢:

    • 只需在一個儲存格設定公式。

    • 自動應用到指定範圍內的所有列(包含未來新增的列)。

    • 完美解決因「插入列」導致公式失效的問題。

  • 與 Excel 差異: Google 試算表使用 ARRAYFORMULA() 包覆即可,比 Excel 按 Ctrl+Shift+Enter 更直觀。

四、 一步步教你做:設定 ARRAYFORMULA 自動計算

  • 情境假設:

    • Google 試算表 C 欄為「價格」(資料從 C2 開始)。

    • D 欄為「數量」(資料從 D2 開始)。

    • E 欄為要自動計算的「總價」。

  • 步驟 1:清空目標欄位

    • 強調必須先刪除 E 欄(E2 及以下)所有手動輸入的公式或數值,否則 ARRAYFORMULA 會因無法擴展而報錯 (#REF!)。

  • 步驟 2:輸入基本 ARRAYFORMULA 公式

    • 在儲存格 E2 輸入:=ARRAYFORMULA(C2:C * D2:D)

    • 解釋 C2:C  D2:D 代表從第 2 列開始的整個 C 欄和 D 欄。

  • 步驟 3:觀察結果與問題

    • 公式會自動計算有資料的列。

    • 點出問題:沒有資料的列會顯示 0

五、 進階處理:結合 IF 函數,消除多餘的 0

  • 目標: 讓沒有價格和數量的列保持空白,而非顯示 0

  • 方法:  ARRAYFORMULA 內加入 IF 判斷式。

  • 步驟 1:修改公式

    • 在儲存格 E2 輸入改良版公式:=ARRAYFORMULA(IF(C2:C*D2:D>0, C2:C*D2:D, ""))

    • 解釋公式邏輯:

      • IF(C2:C*D2:D>0, ... , ...):判斷「價格 * 數量」的結果是否大於 0。

      • C2:C*D2:D:如果大於 0,則顯示計算結果。

      • "":如果不成立(例如 C 或 D 欄為空,導致結果為 0 或錯誤),則顯示空白(由兩個雙引號表示)。

    • (可選) 提及另一種判斷方式:用 ISBLANK(C2:C)  C2:C="" 判斷來源儲存格是否為空。

  • 步驟 2:驗證效果

    • 觀察試算表,確認沒有資料的列不再顯示 0

    • 可再次提交 Google 表單新回覆,驗證總價是否自動計算且格式正確。

六、 總結

  • 再次強調優點: 使用 ARRAYFORMULA (+ IF) 只需設定一次公式,即可一勞永逸地自動計算 Google 表單回覆的總價。

  • 效益: 大幅提升效率,避免手動錯誤,表格更簡潔。

  • 鼓勵行動: 鼓勵讀者立即應用此技巧到自己的 Google 表單與試算表中。


2025年4月4日 星期五

如何使用 JavaScript 大量發佈 YouTube 草稿影片 (告別手動點擊!)

前言/介紹:

若您經常批次上傳大量影片到 YouTube,一定會遇到一個困擾:所有影片預設都會是「草稿」狀態。要把每一部影片手動改成「公開」或「不公開」模式,不僅繁瑣,更是耗時。在這段教學中,分享了一個更有效率的方法,直接利用瀏覽器的開發者工具和一段簡單的 JavaScript 程式碼,就能快速批次發佈草稿影片。

遇到的問題:繁瑣的手動發佈流程

當您批次上傳影片後,YouTube 會將它們全部設為草稿。若要公開這些影片,傳統上您需要:

  1. 逐一點擊進入每部影片的編輯頁面。

  2. 經歷「詳細資訊」、「影片元素」、「檢查項目」、「瀏覽權限」等多個步驟。

  3. 在「瀏覽權限」中選擇「公開」、「私人」或「不公開」。

  4. 儲存設定。

這個過程對於只有幾部影片或許還好,但若有數十甚至數百部影片,手動操作將變得極其沒有效率。過去雖然有嘗試用 Python 腳本模擬點擊,但常因螢幕解析度不同而需重新錄製,通用性不高。

解決方案:瀏覽器控制台 JavaScript 自動化

由網友分享並經張老師驗證的這個方法,巧妙地利用了 Chrome (或其他現代瀏覽器) 內建的「開發人員工具」:

操作步驟:

  1. 開啟 Chrome 瀏覽器 並登入您的 YouTube 工作室。

  2. 前往「內容」分頁,確保您能看到所有待處理的草稿影片。

  3. 按下鍵盤 ,開啟瀏覽器的「開發人員工具」視窗。

  4. 切換到「Console」(主控台) 標籤頁。

  5. (重要步驟 - 允許貼上) 由於瀏覽器的安全機制,您可能無法直接貼上程式碼。請先在 Console 輸入 allow pasting 這串文字,然後按下 Enter 鍵。這會允許您在該次操作中貼上程式碼。(請留意 Console 的提示訊息)。

  6. 複製 JavaScript 程式碼:從張老師影片中提及的參考來源 (例如 Reddit 討論串或 GitHub) 複製提供的 JavaScript 程式碼片段。

  7. 貼上程式碼:回到瀏覽器的 Console,將剛剛複製的程式碼貼上。

  8. 執行程式碼:按下 Enter 鍵。

此時,您會看到腳本開始自動執行,逐一將目前頁面上狀態為「草稿」的影片修改為「公開」模式 (這是腳本的預設行為)。

注意事項:

  • 分頁處理:此腳本一次只會處理當前頁面顯示的影片 (例如每頁 30 部或 50 部)。如果您有多頁草稿,需要捲動到下一頁,然後重新貼上並執行一次腳本。

  • 預設公開:腳本預設是將影片設為「公開」。如果您需要設為「私人」或「不公開」,可以研究原始碼進行修改,或是在腳本執行完畢後,再使用 YouTube 的批次編輯功能統一修改瀏覽權限。

  • 中斷執行:如果腳本執行過程中想停止,可以直接關閉該瀏覽器分頁。

  • 跨平台:此方法基於瀏覽器,因此在 Windows、Mac 等作業系統上皆可使用。

  • 參考來源:原始的 JavaScript 程式碼與討論可在以下 Reddit 連結找到: https://www.reddit.com/r/javascript/comments/k10ff1/i_automated_youtubes_bulk_upload_publish_process/ (及其中連結的 GitHub)。

結語:

對於需要管理大量 YouTube 影片的創作者來說,這個利用 JavaScript 自動化批次發佈草稿的方法,無疑能節省下大量寶貴的時間與精力。




2025年4月3日 星期四

Google 表單教學:如何安全分享範本,讓他人「複製」而非「編輯」你的表單?

Google Sheets (試算表) 可以很方便地分享「僅供檢視」的連結給他人,讓對方可以查看內容但不能修改原始檔案。但如果你想分享 Google Forms (表單) 讓別人參考或作為範本使用,可能會發現直接分享的選項比較像是「允許編輯」,這就可能導致你的原始表單被別人修改,造成困擾。

那麼,有沒有辦法像分享範本一樣,讓別人點擊連結後,是「複製」一份表單到他自己的雲端硬碟,而不是編輯你的原始表單呢?答案是有的!今天就來教大家一個實用技巧。

遇到的問題:Google 表單分享的侷限

  • 直接分享連結 (編輯模式): 如果你直接從表單編輯器取得連結,或是在雲端硬碟中將表單設定為「編輯者」權限分享,收到連結的人就可以直接修改你的原始表單。這對於分享「範本」來說非常不方便,也容易出錯。

  • 缺少「僅供檢視」並「允許複製」的直接選項: 表單不像試算表,在標準分享流程中,沒有一個簡單的選項能讓對方只能看、不能改,但又能輕鬆「建立副本」。

解決方案:利用雲端硬碟資料夾權限 + 修改連結

這個方法的原理是先利用 Google 雲端硬碟的「資料夾」設定共用權限,讓表單檔案本身在雲端硬碟層級是「僅供檢視」,再透過修改分享連結的網址,觸發 Google 的「建立副本」功能。

步驟如下:

  1. 建立一個專用資料夾:

    • 在你的 Google 雲端硬碟中,按右鍵選擇「新增資料夾」,或點擊左上角的「+ 新增」按鈕 -> 「新增資料夾」。

    • 為這個資料夾取個容易識別的名稱,例如:「表單範本分享區」。

  2. 設定資料夾共用權限:

    • 在剛剛建立的資料夾上按右鍵,選擇「共用」 -> 「共用」。

    • 在「一般存取權」的設定中,將權限改為 「知道連結的任何人」

    • 右邊的角色權限,請務必選擇 「檢視者」

    • 點擊「完成」。

    • (這樣設定確保了放在這個資料夾內的檔案,預設是僅供檢視,別人無法直接修改雲端硬碟中的原始檔)。

  3. 在資料夾內建立或移動表單:

    • 方法一 (新表單): 點進這個設定好權限的資料夾,然後在裡面按右鍵「Google 表單」來建立你的新表單。

    • 方法二 (現有表單): 如果你已經有製作好的表單,請將該表單檔案「移動」到這個設定為「檢視者」權限的資料夾內。表單會繼承資料夾的共用權限設定。

  4. 取得表單「編輯」連結:

    • 打開你放在該資料夾內、想要分享的 Google 表單。

    • (你也可以在雲端硬碟中對表單檔案按右鍵 -> 共用 -> 複製連結,但注意權限需為知道連結者皆可檢視)。

    • 比較保險的方式是直接打開表單編輯畫面,點擊右上角的「傳送」按鈕。

    • 在跳出的視窗中,選擇「連結」圖示 (🔗)。

    • 複製這段連結。

  5. 修改連結 (關鍵步驟!):

    • 將剛剛複製的連結貼到任何文字編輯器 (例如:記事本、Word 文件等)。

    • 你會看到連結的結尾通常是 .../edit 或是包含 .../edit?usp=sharing 之類的字樣。

    • 將連結最後的 

    • 範例:

      • 原始連結可能像這樣:
        https://docs.google.com/forms/d/1CUvmKJFv1Z1Z1ZQoqF0KkKAVxFc7Yb_-SFx0rxlbf4fkE/edit?usp=sharing

      • 修改後的連結變成:
        https://docs.google.com/forms/d/1CUvmKJFv1Z1Z1ZQoqF0KkKAVxFc7Yb_-SFx0rxlbf4fkE/copy

  6. 分享修改後的 

    • 現在,將這個結尾是 /copy 的連結分享給需要的人。

效果如何?

當別人點擊你提供的 /copy 連結時,他們不會直接看到表單編輯畫面,而是會看到一個 Google 的提示頁面,詢問他們是否要「建立副本」。

[圖片:展示點擊 copy 連結後出現的「建立副本」提示畫面截圖]

只要他們點擊「建立副本」按鈕,Google 就會自動在 他們自己 的雲端硬碟中,建立一份這個表單的完整複本。他們可以在自己的複本上自由編輯,而你的原始表單範本則完全不受影響,依然安全地存放在你的雲端硬碟中。

總結

透過以上「建立共用檢視資料夾」+「修改分享連結為 /copy」的步驟,你就能夠安全又方便地分享 Google 表單範本,讓其他人可以輕鬆複製使用,同時確保你的原始檔案不會被意外更改。這對於需要提供標準化表單給團隊成員、學生或客戶的情況非常有用!

希望這個教學對你有幫助!





2025年3月30日 星期日

【Google教學】使用正規表示法抓取網頁含有下拉選項預設值的表格(使用chatgpt)



這是網友在discord中發問的問題,因為表格的資料含有下拉選項,沒有辦法用複製貼上的方式,將資料複製到試算表中,所以我就將這個問題問三個AI的軟體(chatgpt、coplit、aistudio),第一次的解答只有抓到下拉選項的預設值,貼上原始碼的HTML跟它說要抓取的結構時,回傳的程式碼就會是接近想要的答案。


問題說明

詢問AI

實作

修正除錯


瞭解正規表示法


貼結果圖請AI整理


使用正規表示法抓取網頁下拉選項預設值

https://docs.google.com/spreadsheets/d/1EGdQTj5uJk5IKfbWfzA_0qX_OE9I9vDKku1mfbjejYM/copy


AI整理後

影片重點整理:

  1. 主題: 使用正規表示法,抓取含下拉選單預設值的表格。

  2. 背景: 源於 Discord 上的網友提問,因無法複製貼上含下拉選單表格資料。

  3. 實驗:

    • 使用三個 AI 工具 (ChatGPT、Copilot、AI Studio) 協助。

    • 將資料匯入試算表。

  4. 要點:

    • 貼上原始碼 HTML 有助於 AI 抓取結構。

    • 程式碼名稱不能與預設相同,否則會發生錯誤。

    • 每次使用請檢查是否要授權。

    • 注意 Sheet 名稱設定。

  5. 結論:

    • 若提問方式錯誤,結果也會不正確。

    • 需要與 AI 工具溝通清楚。

此外,影片有程式碼的操作演示,詳細內容請參考影片。

2025年3月23日 星期日

【Google教學】如何申請LineBot並查詢群組id跟送訊息



之前寫的LineBot查詢群組id,經網友回報我產生的跟它自己用程式產生的id是不相同的,所以要使用Line群組id就要自己寫查詢id的程式才能使用,若是個人要通報用可以到line官網查到個人lineid即可,每個人在不同人群組的lineid都是不相同的,只有該群組的line機器人可以對該群組產生的lineid送訊息,若群組有5人,傳送一次就是5則訊息,免費每個月可以傳送200則,剩餘則數可以上官網查詢(非即時)。


PS:一個群組只能有一個LineBot機器人


--個人--

如何申請lineBot機器人

取得LineToke

取得LineId

--群組--

試算表發佈網頁應用程式/取得網址

啟用webhook/貼上網址


--如何查看錯誤--


LineBot查群組ID跟送訊息

https://docs.google.com/spreadsheets/d/1U0BeBLyZMpTuv26iWo_UrYDl3Xz1DlnBCptncSEThGk/copy




2025年3月15日 星期六

【Google教學】如何用GoogleAppsScript爬取網頁看youtube的所有留言(使用chatgpt的作法)

 


有些人會在youtube影片的留言來抽獎的作法,那我們怎麼去把某一篇影片的留言都抓到google試算表,我們把這個問題拿去問AI(chatgpt),它提供我們程式碼及作法。


1.申請YouTube Data API 來獲取留言

2.查看要查詢的youtube影片ID

3.修改程式碼並執行



程式碼:

function getYouTubeComments() {

  var apiKey = "YOUR_API_KEY";  // 請填入你的 YouTube API Key

  var videoId = "YOUR_VIDEO_ID"; // 影片 ID

  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

  sheet.clear(); // 清空試算表

  sheet.appendRow(["作者", "留言", "發佈時間 (台灣)", "喜歡數"]); // 更新標題


  var nextPageToken = "";

  var maxResults = 100;


  do {

    var url = "https://www.googleapis.com/youtube/v3/commentThreads?part=snippet&videoId=" 

              + videoId + "&key=" + apiKey + "&maxResults=" + maxResults + "&pageToken=" + nextPageToken;

    

    var response = UrlFetchApp.fetch(url, {muteHttpExceptions: true});

    var json = JSON.parse(response.getContentText());


    if (json.items) {

      json.items.forEach(function(item) {

        var snippet = item.snippet.topLevelComment.snippet;

        var author = snippet.authorDisplayName;

        var comment = snippet.textDisplay;

        var publishedAt = snippet.publishedAt; // 原始 UTC 時間

        var likeCount = snippet.likeCount;


        // 轉換 UTC 時間為台灣時間 (UTC+8)

        var taiwanTime = convertToTaiwanTime(publishedAt);


        sheet.appendRow([author, comment, taiwanTime, likeCount]);

      });

    }


    nextPageToken = json.nextPageToken || "";

  } while (nextPageToken);

}


// 轉換 UTC 時間到台灣時間 (UTC+8)

function convertToTaiwanTime(utcTime) {

  var date = new Date(utcTime);  // 解析 ISO 時間字串

  date.setHours(date.getHours() + 8); // 加 8 小時變成台灣時間

  return date.toISOString().replace("T", " ").split(".")[0]; // 格式化輸出 YYYY-MM-DD HH:mm:ss

}



2025年3月8日 星期六

【excel教學】如何使用PowerQuery將一筆合併後欄位還原成多筆(使用chatgpt的作法)


早期沒有PowerQuery時,我有寫一個快速分割相同資料合併後的欄位的excel工具,現

在excel 2016後(含)可以使用PowerQuery就可以做到這個功能這是我用圖片問Chatgpt

要如何解決,它給我2個解答,我今天就來操作如何使用PowerQuery來做操作。



方法 1:使用 Power Query(適合無程式背景的使用者)

步驟

選取資料(A1:C9)。

點擊「資料」→「從表格/範圍」(會自動建立表格)。

拆分「計數」欄位:

選取「計數」欄位,點擊「轉換」→「拆分欄位」→「以分隔符號」。

選擇 逗號(,) 為分隔符號,然後按「確定」。

轉換成縱向表格:

選取 所有拆分後的欄位(計數.1、計數.2...)。

點擊「轉換」→「取消透視欄」。

重新命名欄位:

「屬性」欄改為「訂單編號」。

「值」欄改為「訂單號」。

關閉並載入:

點擊「關閉並載入」將結果匯入 Excel。


【Excel工具教學】在Excel中快速分割相同資料合併後的欄位

https://www.youtube.com/watch?v=JSVY6FqIeKM


範例檔案下載:

https://drive.google.com/file/d/167hIW3W6fB4Y25AO4nuB-icSgs6EmSut/view

PowerQuery合併相同欄位.xlsx


GoogleAI整理後的大綱



I. 開場與主題介紹 (0:00 - 0:16)

* 講者自我介紹:彰化一整天的 Blog 站長。

* 說明今日主題:使用 Excel 的 Power Query 功能,將單一欄位中以分隔符號合併的多筆資料,拆分成多列資料。

* 提及此方法是參考 ChatGPT 提供的解決方案。


II. 背景說明 (0:17 - 0:31)

* 早期方法:在沒有 Power Query 時,講者曾寫過 Excel 工具 (VBA) 來處理類似問題。

* 現況:Excel 2016 及之後版本內建 Power Query,可以直接達成此功能。


III. ChatGPT 解決方案來源 (0:32 - 1:18)

* 問題提出:講者使用圖片向 ChatGPT 詢問如何將左邊(合併欄位)的表格轉換成右邊(拆分欄位成多列)的格式。

* ChatGPT 回覆:提供了兩種方法:

1. Power Query (適合無程式背景使用者)。

2. VBA (自動化轉換)。

* 本次教學重點:著重於 Power Query 的操作方法。


IV. Power Query 操作示範 (1:18 - 5:34)

* 準備資料 (1:18 - 1:48)

* 從範例連結複製資料。

* 貼到新的 Excel 工作表中。

* 載入 Power Query (1:48 - 2:36)

* 選取資料範圍 (A1:C9)。

* 點選 資料 -> 從表格/範圍。

* 建立表格對話框:勾選 我的表格有標題,按 確定。

* 進入 Power Query 編輯器。

* 分割欄位 (2:36 - 3:14)

* 選取要分割的 計數 欄位。

* 點選 常用 -> 分割資料行 -> 依分隔符號。

* 確認分隔符號為 逗號,按 確定。 (欄位被分割成 計數.1, 計數.2, 計數.3...)

* 取消樞紐分析 (Unpivot) (3:14 - 4:04)

* 選取所有分割後產生的新欄位 (計數.1, 計數.2, 計數.3...)。

* 點選 轉換 -> 取消樞紐分析資料行。 (產生 屬性 和 值 兩個新欄位)

* 重新命名與整理欄位 (4:04 - 4:58)

* 移除 屬性 欄位 (此範例中不需要)。

* 將 值 欄位重新命名為 訂單編號。

* 關閉並載入 (4:58 - 5:34)

* 點選 常用 -> 關閉並載入。

* 結果會載入到新的 Excel 工作表中,呈現拆分後的格式。


V. 提及其他方法 (5:34 - 8:18)

* VBA 方法 (5:40 - 6:23)

* 簡述 ChatGPT 提供的 VBA 步驟 (開啟 VBA 編輯器、插入模組、貼上程式碼、執行)。

* 說明 Power Query 較直覺,VBA 較方便自動化。

* 講者舊工具 (6:24 - 8:16)

* 提及講者早期使用 VBA 製作的 Excel 工具,並提供影片連結參考。

* 展示舊工具的操作方式(選取欄位、指定分隔符號、指定分割欄位)。


如何利用 Google Colab 與 Whisper 實現「超速」逐字稿:不再讓電腦跑上一整天!

身為數位生產力專家,我經常被問到一個問題:「為什麼轉錄一段不到 10 分鐘的影片,電腦卻要跑上一小時?」 我也曾面臨過這種窘境。有一次,我那台擁有獨立顯卡的電腦主機板壞了,被迫改用一般電腦執行 Whisper Desktop (Large V2) 。結果,一段僅僅 8 分鐘 的...