親愛的同學們,大家好,今天,Meiko想向大家介紹一項非常實用的技術——Google Apps Script,簡稱GAS。你可能會好奇,這個GAS到底是什麼?想象一下,如果我們有一種方法,可以讓電腦幫我們自動完成繁瑣的數據整理和檔案合併,是不是聽起來就像擁有了一個聰明的助手?GAS正是這樣一個強大的工具,它能夠幫我們節省大量的時間和精力,讓我們可以專注於更有創造性的工作。
使用Google Apps Script,一鍵完成Google Sheets跨檔合併與排程更新,詳細的操作步驟可以參考下方影片中的說明。
使用情境有以下兩種
1.使用檔案ID進行合併
2.合併整個資料夾內的所有檔案
執行方式有以下兩種
1.手動按下執行按鈕
2.排程更新
若使用情境差不多,語法修改的地方其實不多
綠色文字的部分是同學們要修改的地方,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);
}
}
綠色文字的部分是同學們要修改的地方,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教學筆記