告別剪剪貼貼,新手也能利用GAS一鍵完成跨檔合併、排程自動更新

更新於 2024/03/24閱讀時間約 8 分鐘

親愛的同學們,大家好,今天,Meiko想向大家介紹一項非常實用的技術——Google Apps Script,簡稱GAS。你可能會好奇,這個GAS到底是什麼?想象一下,如果我們有一種方法,可以讓電腦幫我們自動完成繁瑣的數據整理和檔案合併,是不是聽起來就像擁有了一個聰明的助手?GAS正是這樣一個強大的工具,它能夠幫我們節省大量的時間和精力,讓我們可以專注於更有創造性的工作。


主要功能:

使用Google Apps Script,一鍵完成Google Sheets跨檔合併與排程更新,詳細的操作步驟可以參考下方影片中的說明。

使用情境:

使用情境有以下兩種

1.使用檔案ID進行合併
2.合併整個資料夾內的所有檔案

執行方式有以下兩種

1.手動按下執行按鈕
2.排程更新

GAS語法:

若使用情境差不多,語法修改的地方其實不多

情境1:使用檔案ID進行合併

綠色文字的部分是同學們要修改的地方,1.檔案的ID、2.抓取資料的範圍
function mergeSheet() {
// 定義來源檔案的ID
var sourceIds = [
'第一個檔案的ID',
'第二個檔案的ID' // 這裡要改成你要合併的檔案ID,檔案ID如何取得,可以看影片介紹
];

// 獲取目標Sheet
var targetSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var targetSheet = targetSpreadsheet.getActiveSheet();

// 確保目標Sheet中第一行為空白,並從第二行開始清空數據
clearSheetFromSecondRow(targetSheet);

// 循環處理每一個來源檔案
sourceIds.forEach(function(sourceId) {
var sourceSpreadsheet = SpreadsheetApp.openById(sourceId);
var sheet = sourceSpreadsheet.getSheets()[0]; // 選擇每個檔案的第一張工作表
var data = sheet.getRange('A2:G').getValues(); // 這裡要修改成您要抓取的範圍
appendDataToSheetFromSecondRow(targetSheet, data);
});
}

// 從第二行開始清空Sheet中的數據
function clearSheetFromSecondRow(sheet) {
var lastRow = sheet.getLastRow();
if (lastRow > 2) { // 如果超過兩行,從第二行開始刪除
sheet.deleteRows(2, lastRow - 1);
}
}

// 從第二行開始將數據追加到Sheet
function appendDataToSheetFromSecondRow(sheet, data) {
if (data.length > 0) {
var startRow = Math.max(sheet.getLastRow() + 1, 2); // 確保從第二行開始
sheet.getRange(startRow, 1, data.length, data[0].length).setValues(data);
}
}

情境2:將整個資料夾內的檔案進行合併

綠色文字的部分是同學們要修改的地方,1.資料夾的ID、2.抓取資料的範圍
function mergeSheetsFromFolder() {
var folderId = 'YOUR_FOLDER_ID'; // 這裡要修改成你要合併的資料夾ID,資料夾ID如何取得,可以看影片中的介紹
var folder = DriveApp.getFolderById(folderId);
var files = folder.getFiles();

var targetSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var targetSheet = targetSpreadsheet.getActiveSheet();

// 清空目標Sheet中第二行及以下的數據
var lastRow = targetSheet.getLastRow();
if (lastRow > 1) {
targetSheet.deleteRows(2, lastRow - 1);
}

var startRow = 2; // 設定初始的起始行

while (files.hasNext()) {
var file = files.next();
var spreadsheet = SpreadsheetApp.openById(file.getId());
var sheet = spreadsheet.getSheets()[0]; // 假設我們只關注每個檔案的第一個Sheet

// 檢查Sheet是否有足夠的行和列,避免讀取空範圍
if(sheet.getMaxRows() > 1 && sheet.getMaxColumns() >= 7) {
var data = sheet.getRange('A2:G' + sheet.getLastRow()).getValues(); //這裡同學們要修改一下,抓取的資料範圍
if (data.length > 0 && data[0].length > 0) { // 確保數據非空
targetSheet.getRange(startRow, 1, data.length, data[0].length).setValues(data);
startRow += data.length; // 更新startRow,為下一次寫入做準備
}
}
}
}

影片教學


購書優惠

好書介紹:Excel 公式+函數超實用字典:515 個函數+1028 個範例
旗標知識講堂➤https://www.facebook.com/flagforum
旗標蝦皮商城➤ https://shopee.tw/flag23311033 (可使用折扣碼)
.2024/01/01-2024/03/31 優惠碼:【FLAGM0005】 原9折再打84折
.2024/04/01-2024/06/30 優惠碼:【FLAGM0006】 原9折再打84折
.2024/07/01-2024/09/30 優惠碼:【FLAGM0007】 原9折再打84折
.2024/10/01-2024/12/31 優惠碼:【FLAGM0008】 原9折再打84折

好用工具推薦

Ⓜ️Gamma AI簡報
Ⓜ️ LightPDF 官方網站
Ⓜ️新手影片剪輯線上平台 FlexClip
Ⓜ️Flot.ai 文案寫作AI工具 折扣碼 【 MEIKO 】20%優惠
Ⓜ️DesignEvo LOGO 折扣碼 折扣碼【 MeikoDE20 】20%優惠


如果文章對你有幫助,請留言讓Meiko知道唷✍️
還請幫Meiko按❤️、分享、收藏,別忘了要按【追蹤】
版權所有,請勿複製 | 歡迎分享
Meiko微課頻道 | Meiko教學筆記

avatar-img
128會員
44內容數
Meiko微課頻道主要以辦公室應用為出發點,針對上班族群所遇到的問題進行分享
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
本單元將跟同學們分享,如何將有開始日期和結束日期的請假資料,自動帶入班表或是行事曆內,附影片教學。
過去,在Excel中使用核取方塊時,我們常受限於其大小,一直無法輕易調整。最近的E365版本解決了這個問題,但舊版本的Excel卻沒有這個新功能。因此,在這裡,Meiko將跟同學們分享如何在新舊版本中輕鬆放大核取方塊,而且不受數量的限制。 實際操作請參考影片教學,影片中提供的語法請參考本篇文章
情境 M小姐常常需要在檔案之間轉貼資料,由A檔案複製資料貼到B檔案內,中間不小心在轉貼資料之間,建立了連結的來源資料,而M小姐也不知道到底連結的資料來自於哪一張工作表,每每開啟B檔案時,總會出現「此活頁簿內含一或多個可能不安全的外部來源連結」訊息,M小姐該如何管理這個連結呢?
情境 M小姐有一份報表,報表上使用了「交叉分析篩選器」,可以方便分享給其他人進行查詢,但是又害怕別人變動了資料內容,於是她想到,可以把工作表進行「保護」,但.....沒想到工作表一保護,要讓大家使用的「交叉分析篩選器」卻無法使用了,這該怎麼辦呢?
情境 M小姐經常會在Excel報表中,利用輔助欄位進行計算,這些輔助欄位最後都會被【隱藏】起來,M小姐常常需要將計算後的結果,填入到另外一張報表中,這時進行複製貼上後,總是會把這些隱藏的輔助欄位給貼上來,M小姐應該怎麼複製,才能略過這些隱藏的範圍呢?
巨集檔案為什麼會被紅標 從網路上下載的巨集檔案xlsm,大多時候都會遇到紅標:出現安全性風險警告 Microsoft 已封鎖巨集執行,因為此檔案的來源不受信任 巨集可以讓Excel突破功能上的限制,加快處理的速度,但巨集也常常成為惡意攻擊的目標,用來散佈惡意程式碼,所以微軟近期對於線上下載下來的巨集
本單元將跟同學們分享,如何將有開始日期和結束日期的請假資料,自動帶入班表或是行事曆內,附影片教學。
過去,在Excel中使用核取方塊時,我們常受限於其大小,一直無法輕易調整。最近的E365版本解決了這個問題,但舊版本的Excel卻沒有這個新功能。因此,在這裡,Meiko將跟同學們分享如何在新舊版本中輕鬆放大核取方塊,而且不受數量的限制。 實際操作請參考影片教學,影片中提供的語法請參考本篇文章
情境 M小姐常常需要在檔案之間轉貼資料,由A檔案複製資料貼到B檔案內,中間不小心在轉貼資料之間,建立了連結的來源資料,而M小姐也不知道到底連結的資料來自於哪一張工作表,每每開啟B檔案時,總會出現「此活頁簿內含一或多個可能不安全的外部來源連結」訊息,M小姐該如何管理這個連結呢?
情境 M小姐有一份報表,報表上使用了「交叉分析篩選器」,可以方便分享給其他人進行查詢,但是又害怕別人變動了資料內容,於是她想到,可以把工作表進行「保護」,但.....沒想到工作表一保護,要讓大家使用的「交叉分析篩選器」卻無法使用了,這該怎麼辦呢?
情境 M小姐經常會在Excel報表中,利用輔助欄位進行計算,這些輔助欄位最後都會被【隱藏】起來,M小姐常常需要將計算後的結果,填入到另外一張報表中,這時進行複製貼上後,總是會把這些隱藏的輔助欄位給貼上來,M小姐應該怎麼複製,才能略過這些隱藏的範圍呢?
巨集檔案為什麼會被紅標 從網路上下載的巨集檔案xlsm,大多時候都會遇到紅標:出現安全性風險警告 Microsoft 已封鎖巨集執行,因為此檔案的來源不受信任 巨集可以讓Excel突破功能上的限制,加快處理的速度,但巨集也常常成為惡意攻擊的目標,用來散佈惡意程式碼,所以微軟近期對於線上下載下來的巨集
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
上次環島是什麼時候了? 答案是高中畢業時的那個暑假,成員為本次環台之旅原班人馬,一個也不差,只是每個人的年齡多了18歲而已,18歲不多! 正好是恁北人生的一半! 至於跟我同騎的成員往後會一一介紹。 所以訂了一個很精要的標題"告別宏聯12年之極東南西北愛老婆GOLF節能減碳自行車環台之旅"
Thumbnail
我的總務職銜,終於職務移交後卸任,不知何時,我開始覺得每人的命運真的從出生那一刻即底定,也許消極,但真實的說法,應是當你經常的遇到罕見的事情,而別人卻一職到底,無任何波瀾,自己卻是驚濤駭浪,過了一關又一關,開始相信許多時候,人的命運真的大不同,也許經歷多了,更在乎自己心裡的那份感受,不再仰望你的老闆
Thumbnail
【別告訴她】 是華裔導演王子逸的作品,講述自身故事,開場就告訴觀眾故事源自「一個真實的謊言」,但並沒有告訴觀眾哪種選擇才是對的電影節奏很溫柔,讓人在不知覺之間而感動,透過劇情的鋪陳呈現東西文化看待生命個體的差異,【摯愛的人得到絕症,到底要不要告知】這是我們每一個人生命中都會遇到的課題,這沒有明確的答
Thumbnail
在闔上2016年行事曆記事本,從隨身包包移出準備歸檔前,花了十多分鐘,約略地回顧與統計一下今年的行程,同時攤開2017的行事曆,展望未來,並且預作規劃。 (一)2016年,一共有四次出國的行程,兩次純
Thumbnail
<p>但是我不能/做徹底的/檢查/會/發現/我是金星人</p>
Thumbnail
<p>我有一個問題,你們稱他智多星。我有一種病,你們稱他做大叔。有個問題困擾我很久,你們叫他暴走的馬特。</p>
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
上次環島是什麼時候了? 答案是高中畢業時的那個暑假,成員為本次環台之旅原班人馬,一個也不差,只是每個人的年齡多了18歲而已,18歲不多! 正好是恁北人生的一半! 至於跟我同騎的成員往後會一一介紹。 所以訂了一個很精要的標題"告別宏聯12年之極東南西北愛老婆GOLF節能減碳自行車環台之旅"
Thumbnail
我的總務職銜,終於職務移交後卸任,不知何時,我開始覺得每人的命運真的從出生那一刻即底定,也許消極,但真實的說法,應是當你經常的遇到罕見的事情,而別人卻一職到底,無任何波瀾,自己卻是驚濤駭浪,過了一關又一關,開始相信許多時候,人的命運真的大不同,也許經歷多了,更在乎自己心裡的那份感受,不再仰望你的老闆
Thumbnail
【別告訴她】 是華裔導演王子逸的作品,講述自身故事,開場就告訴觀眾故事源自「一個真實的謊言」,但並沒有告訴觀眾哪種選擇才是對的電影節奏很溫柔,讓人在不知覺之間而感動,透過劇情的鋪陳呈現東西文化看待生命個體的差異,【摯愛的人得到絕症,到底要不要告知】這是我們每一個人生命中都會遇到的課題,這沒有明確的答
Thumbnail
在闔上2016年行事曆記事本,從隨身包包移出準備歸檔前,花了十多分鐘,約略地回顧與統計一下今年的行程,同時攤開2017的行事曆,展望未來,並且預作規劃。 (一)2016年,一共有四次出國的行程,兩次純
Thumbnail
<p>但是我不能/做徹底的/檢查/會/發現/我是金星人</p>
Thumbnail
<p>我有一個問題,你們稱他智多星。我有一種病,你們稱他做大叔。有個問題困擾我很久,你們叫他暴走的馬特。</p>