如何使用DriveApp searchFiles参数精确搜索标题含指定日期的文件
解决Google Drive日期文件搜索混淆的问题
当前脚本使用title contains模糊匹配日期字符串,会导致数字顺序不同的日期(如11/2/2022和2/11/2022)被误匹配,同时遍历所有匹配文件后仅保留最后一个ID,也可能导致结果错误。
解决方案
- 精确匹配日期格式:根据文件名中日期的实际分隔方式,给搜索的日期字符串添加固定前后缀(如下划线、空格),避免模糊匹配到顺序颠倒的日期。
- 结合文件日期属性筛选:通过文件的创建/修改日期双重验证,确保匹配到指定日期的文件。
- 优化文件迭代逻辑:找到第一个匹配文件后直接停止遍历,避免取到错误的最后一个文件。
修改后的脚本
function Builder() { const ss = SpreadsheetApp.getActiveSpreadsheet(); const indexsheet = ss.getSheetByName("Index"); indexsheet.getRange(3, 3, 8).clearContent(); for (let i = 0; i < 8; i++) { const cell = indexsheet.getRange(i + 3, 2).getValue(); const cellfolder = indexsheet.getRange(i + 3, 4).getValue(); // 格式化目标日期为两种格式 const final = Utilities.formatDate(cell, "GMT", "MM-dd-yy"); const finalx = Utilities.formatDate(cell, "GMT", "MM-dd-yyyy"); // 构建日期范围(当天0点到23:59:59)用于筛选文件创建时间 const startDate = new Date(cell); startDate.setHours(0, 0, 0, 0); const endDate = new Date(cell); endDate.setHours(23, 59, 59, 999); const startISO = startDate.toISOString(); const endISO = endDate.toISOString(); // 优先搜索短格式日期,添加前后下划线(根据实际文件名调整)+ 日期范围筛选 let filesource = DriveApp.searchFiles( `title contains '_${final}_' and parents in '${cellfolder}' and createdDate >= '${startISO}' and createdDate <= '${endISO}'` ); let fileId = null; if (filesource.hasNext()) { const file = filesource.next(); // 取第一个匹配文件 fileId = file.getId(); file.setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.VIEW); } else { // 短格式没找到,搜索长格式日期 const filesourcex = DriveApp.searchFiles( `title contains '_${finalx}_' and parents in '${cellfolder}' and createdDate >= '${startISO}' and createdDate <= '${endISO}'` ); if (filesourcex.hasNext()) { const file = filesourcex.next(); fileId = file.getId(); file.setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.VIEW); } } if (fileId) { indexsheet.getRange(i + 3, 3).setValue(fileId); } } }
说明
- 如果文件名中的日期前后没有下划线,请将
_${final}_替换为实际的分隔符(如空格、特定前缀/后缀,例如" ${final} "匹配日期前后的空格)。 - 若更倾向于用文件修改日期而非创建日期,将
createdDate替换为modifiedDate即可。
内容的提问来源于stack exchange,提问作者Warren Thornton
相关产品推荐
相关产品推荐

