在 [GAS] 資料庫 (Library) 筆記時有提到版本內有 [最新程式碼快照 (開發人員模式)] 可以使用,但實際應用時發現,原來要存取 [最新程式碼快照 (開發人員模式)] 必須具備 [編輯者] 權限,當初分享 library 給別人使用,因為只授予 [檢視者],就無法存取
星期一, 2月 09, 2026
星期四, 2月 05, 2026
[GAS] Slide 合併資料
Slide 常見應用場景,在一個範本 Slide 上設定多個 {{文字說明}} 符號,並從 Google Sheet 內抓取資料後,根據實務需求取代 {{文字說明}},該筆記以課程結業證書為例筆記
Slide 範本
gs Code
把 [課程結業證書範本 Slide] 複製至新位置,該筆記是以根目錄內的日期資料夾 (EX:2026-02-05) 去,並把學員資料透過 replaceAllText() 更新至 Slide {{文字說明}}
{{文字說明}} 基本上在 Slide 內是唯一的識別文字就行,前後有沒有符號包起來不是重點,但既然官方教學都使用 {{}} 包起來,就延續該風格囉,Slide 內有三個文字說明,分別為 {{學員姓名}}、{{課程名稱}}、{{日期}}
replaceAllText(findText, replaceText) 函式
執行結果
該筆記只有使用 replaceAllText() 取代文字,還有兩個主題分別為
Slide 範本
gs Code
把 [課程結業證書範本 Slide] 複製至新位置,該筆記是以根目錄內的日期資料夾 (EX:2026-02-05) 去,並把學員資料透過 replaceAllText() 更新至 Slide {{文字說明}}
{{文字說明}} 基本上在 Slide 內是唯一的識別文字就行,前後有沒有符號包起來不是重點,但既然官方教學都使用 {{}} 包起來,就延續該風格囉,Slide 內有三個文字說明,分別為 {{學員姓名}}、{{課程名稱}}、{{日期}}
replaceAllText(findText, replaceText) 函式
- findText:以該筆記為例,是指 {{文字說明}}
- replaceText:取代 {{文字說明}} 的內容
function SlideMergeData() {
const presentation = SlidesApp.getActivePresentation();
const timeZone = Session.getScriptTimeZone();
const dateString = Utilities.formatDate(new Date(), timeZone, "yyyy-MM-dd");
// 設定根 FolderID
const rootFolderId = GetFolderID();
const rootFolder = DriveApp.getFolderById(rootFolderId);
// 檢查並刪除同名的日期資料夾
const existingFolders = rootFolder.getFoldersByName(dateString);
while (existingFolders.hasNext()) {
const oldFolder = existingFolders.next();
oldFolder.setTrashed(true); // 將舊資料夾移至垃圾桶
}
// 建立日期資料夾
const dateFolder = rootFolder.createFolder(dateString);
// 複製範本 Slide 來使用
const templateFile = DriveApp.getFileById(presentation.getId());
const studentName = "王小強";
const copyFile = templateFile.makeCopy(studentName, dateFolder);
// 開啟新 Slide 並進行文字替換
const newPresentation = SlidesApp.openById(copyFile.getId());
newPresentation.replaceAllText('{{學員姓名}}', studentName);
newPresentation.replaceAllText('{{課程名稱}}', "Google Apps Script");
newPresentation.replaceAllText('{{日期}}', dateString);
newPresentation.saveAndClose();
}
執行結果
該筆記只有使用 replaceAllText() 取代文字,還有兩個主題分別為
- replaceAllShapesWithImage 取代圖片
- BatchUpdate:有效能考量使用,需要開啟 Google Drive API 服務
目前沒有使用到,單純紀錄


