如何在Google脚本中根据运行日期自动匹配对应文件名
自动获取当日Drive CSV文件的解决方案
当然可以实现自动匹配当日文件的需求,不用每次手动修改日期啦!我们可以借助Google Apps Script的日期处理工具,自动生成符合你文件名格式的字符串,再去Drive中精准查找对应的文件。
具体实现步骤
生成当日的目标文件名
你的文件名格式是data@YYYY-DD-MM(比如data@2020-19-03对应2020年3月19日),首先要获取当前日期,再格式化成对应字符串。注意GAS里的Date对象月份是从0开始计数的(1月对应0,12月对应11),所以要给月份值加1;同时用Utilities.formatString确保日和月是两位数字(自动补前导零),完美匹配你的文件名规则。安全查找文件并处理
用生成的文件名去Drive查找时,最好先判断文件是否存在,避免脚本因找不到文件直接报错崩溃。
修改后的代码片段
替换你原来的代码部分,改成下面这样:
// 获取当前日期并格式化为YYYY-DD-MM格式 const today = new Date(); const formattedDate = Utilities.formatString("%d-%02d-%02d", today.getFullYear(), today.getDate(), today.getMonth() + 1 // 月份从0开始,必须加1修正 ); const targetFileName = `data@${formattedDate}`; // 查找目标文件并处理 const files = DriveApp.getFilesByName(targetFileName); if (files.hasNext()) { var datafile = files.next(); var datacsv = Utilities.parseCsv(datafile.getBlob().getDataAsString()); datatab.getRange(1,1, datacsv.length, datacsv[0].length).setValues(datacsv); } else { // 找不到文件时的提示逻辑,可按需调整 SpreadsheetApp.getUi().alert(`未找到当日文件:${targetFileName}`); console.log(`日志记录:文件 ${targetFileName} 不存在`); }
关键细节说明
Utilities.formatString("%d-%02d-%02d", ...):%02d是格式化标记,会把数字转为两位,不足两位时自动补0,比如3月会变成03、5日会变成05,完全贴合你的文件名格式。files.hasNext():先检查是否存在对应文件,避免直接调用next()触发"No item found"的错误。- 如果有时区匹配需求(比如Drive文件按UTC时间生成,但你需要对应本地时区的日期),可以调整日期获取逻辑,例如:
// 示例:获取上海时区的当日日期 const today = new Date(new Date().toLocaleString("en-US", {timeZone: "Asia/Shanghai"}));
内容的提问来源于stack exchange,提问作者MAbig11
相关产品推荐
相关产品推荐

