如何获取Google Drive子文件夹前一日创建的Google Spreadsheet URL并修复脚本
Google Drive 前一日Spreadsheet URL提取方案
原代码问题汇总
- 仅读取了目标根目录下第一个子文件夹的文件,未遍历所有自动生成的子文件夹
- 第一次遍历完文件迭代器后,迭代器已走到末尾,第二轮循环不会执行
- 日期判断逻辑错误:
if (result = date);是赋值操作而非比较,末尾分号直接结束了判断逻辑,后续代码块不受判断条件约束 - 未筛选文件类型为Google Spreadsheet,也未提取需要的URL字段
- 日期比较直接匹配精确到毫秒的时间点,无法覆盖前一日全天的所有创建文件
修正后可用代码
function listYesterdayFiles() { // 替换为你的目标根文件夹ID const rootFolder = DriveApp.getFolderById("Jksajdhasdj123123klj"); const finalList = []; const MILLIS_PER_DAY = 1000 * 60 * 60 * 24; const now = new Date(); // 计算昨日0点、今日0点的时间戳,用于区间判断 const yesterdayStart = new Date(now.getFullYear(), now.getMonth(), now.getDate() - 1).getTime(); const todayStart = new Date(now.getFullYear(), now.getMonth(), now.getDate()).getTime(); // 遍历根目录下所有子文件夹 const subFolders = rootFolder.getFolders(); while (subFolders.hasNext()) { const subFolder = subFolders.next(); // 遍历当前子文件夹下所有文件 const files = subFolder.getFiles(); while (files.hasNext()) { const file = files.next(); const createTime = file.getDateCreated().getTime(); // 筛选条件:创建时间属于昨日、文件为Google Spreadsheet if (createTime >= yesterdayStart && createTime < todayStart && file.getMimeType() === "application/vnd.google-apps.spreadsheet") { finalList.push([ file.getName(), file.getUrl(), file.getDateCreated() ]); } } } // 结果可直接在应用脚本的日志中查看,也可自行修改逻辑写入Google Sheet Logger.log(finalList); return finalList; }
每日自动触发设置方法
- 保存脚本后,点击编辑器左侧时钟形状的「触发器」按钮
- 点击「添加触发器」,选择
listYesterdayFiles作为运行函数,事件源选择「时间驱动」,触发器类型选择「日计时器」,设置你需要的每日触发时间即可
内容的提问来源于stack exchange,提问作者Vladislav Muzychka
相关产品推荐
相关产品推荐

