因為辦活動,我們需要在徵件結束後,快速整理學生的資料,作為成果手冊印刷用。不過要完成這項工作,我們必須找到特定學生上傳的檔案連結,並且將它搜集到個別的資料夾中,才能將它分享給印刷廠商排版處理。
所以我跟AI聊到我的需求,他給我蠻詳細的程式建議,並且寫出適當的程式
function copyMultipleUploadedFiles() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("表單回應 1"); // ← 請確認你的表名稱
var data = sheet.getDataRange().getValues();
var folder = DriveApp.getFolderById('🔗請貼上你的主資料夾ID'); // ← 換成你自己的主資料夾 ID
for (var i = 1; i < data.length; i++) {
var name = data[i][5]; // 第6欄是姓名
if (!name) continue; // 沒有姓名就跳過
// 建立或取得子資料夾(用姓名命名)
var subFolder;
try {
subFolder = folder.getFoldersByName(name).next();
} catch (e) {
subFolder = folder.createFolder(name);
}
// 第7、10、11欄的檔案上傳資料
var fileColumns = [6, 9, 10]; // 分別是第7、10、11欄(index從0開始)
fileColumns.forEach(function(colIndex) {
var fileUrls = data[i][colIndex];
if (fileUrls) {
var urls = fileUrls.split(", ");
for (var j = 0; j < urls.length; j++) {
try {
var fileId = urls[j].match(/[-\w]{25,}/)[0];
var file = DriveApp.getFileById(fileId);
// ⬇️ 複製檔案到子資料夾,而不是搬移
file.makeCopy(file.getName(), subFolder);
} catch (err) {
Logger.log("第" + (colIndex + 1) + "欄複製錯誤:" + err);
}
}
}
});
}
}
這個程式蠻簡單的
首先需要開設一個資料夾,並且將主資料夾ID複製出來
/folders/1vxC9BVhQsn0UytaC-HWm6phQ_s3UMuxY
ID就是folders後面這一串文字
接著要知道自己表單連結的試算表,目前位於那個工作表,用來改掉表單回應 1
還有就是要知道自己截取的資料位於第幾欄
我的第6欄是主題名稱 我想拿它當作資料夾名稱
第7欄是學生報名表
第10欄是學生作品照片 (因為有3~5張,所以需要處理","號)
第11欄是學生個別照片
寫好之後,存入Apps Script
提供檔案寫入權限
執行
他就會把這幾個欄位中有超連結的資料複製到我設定的資料夾,並且以學生主題當作資料夾名稱