如何使用Google Apps Script下载Google Sheets单元格链接中的图片与PDF文件?
批量整理Google Drive文件至指定文件夹(Google Apps Script实现)
核心思路
解析Google Sheets中存储的Drive文件URL,提取文件ID,通过Apps Script批量将对应文件复制/移动到目标文件夹,同时在表格中标记处理状态。
准备工作
- 在Google Drive中创建目标文件夹,记录其ID(打开文件夹后,地址栏中
https://drive.google.com/drive/folders/后的长字符串)。 - 确认Google Sheets中存储文件URL的列(示例用A列,可自行修改),数据从第2行开始(第1行为表头)。
完整脚本代码
function batchOrganizeDriveFiles() { // === 配置参数,请根据实际情况修改 === const sheetName = "Sheet1"; // 你的工作表名称 const urlColumn = "A"; // 存储文件URL的列 const startRow = 2; // 数据起始行(跳过表头) const targetFolderId = "替换成你的目标文件夹ID"; // 目标文件夹ID // === 以下代码无需修改 === const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName); const targetFolder = DriveApp.getFolderById(targetFolderId); const lastRow = sheet.getLastRow(); const urlsRange = sheet.getRange(`${urlColumn}${startRow}:${urlColumn}${lastRow}`); const urls = urlsRange.getValues().flat(); // 将二维数组转为一维 urls.forEach((url, index) => { const currentRow = startRow + index; if (!url.trim()) { sheet.getRange(`${urlColumn}${currentRow}`).setBackground("#ffffcc"); // 标记空单元格 return; } // 兼容两种Drive URL格式:/d/[ID]/view 和 ?id=[ID] const fileIdMatch = url.match(/[d\/=]([a-zA-Z0-9_-]{25,})/); if (!fileIdMatch) { sheet.getRange(`${urlColumn}${currentRow}`).setBackground("#ffcccc"); // 标记无效URL console.log(`无效URL:${url}`); return; } const fileId = fileIdMatch[1]; try { const file = DriveApp.getFileById(fileId); // 二选一:复制文件(保留原文件)或移动文件(原位置删除) file.makeCopy(targetFolder); // file.moveTo(targetFolder); sheet.getRange(`${urlColumn}${currentRow}`).setBackground("#ccffcc"); // 标记处理成功 } catch (err) { sheet.getRange(`${urlColumn}${currentRow}`).setBackground("#ffcccc"); console.log(`处理失败:${url} | 错误信息:${err.message}`); } }); SpreadsheetApp.getUi().alert("批量处理完成!表格中绿色为成功,红色为无效/失败,黄色为空单元格。"); }
使用步骤
- 打开你的Google Sheets,点击顶部菜单栏的扩展程序 > Apps 脚本。
- 删除默认的
myFunction,粘贴上述代码,修改配置参数中的工作表名称、列、目标文件夹ID。 - 点击保存按钮,给脚本命名(比如
BatchFileOrganizer)。 - 点击运行按钮,首次运行触发权限授权:
- 点击“查看权限”,选择你的Google账号。
- 点击“高级”,然后选择“前往[脚本名称](不安全)”(脚本为自定义编写,无安全风险)。
- 授权完成后,脚本自动运行。
注意事项
- 确保你对目标文件有编辑权限(Forms上传的文件默认上传者拥有权限)。
- 脚本用颜色标记处理状态:绿色=成功,红色=无效URL/无权限,黄色=空单元格。
makeCopy保留原文件,仅复制到目标文件夹;moveTo会将原文件从原文件夹移除。
内容的提问来源于stack exchange,提问作者Víctor Enrich
相关产品推荐
相关产品推荐

