You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Google脚本中根据运行日期自动匹配对应文件名

自动获取当日Drive CSV文件的解决方案

当然可以实现自动匹配当日文件的需求,不用每次手动修改日期啦!我们可以借助Google Apps Script的日期处理工具,自动生成符合你文件名格式的字符串,再去Drive中精准查找对应的文件。

具体实现步骤

  1. 生成当日的目标文件名
    你的文件名格式是data@YYYY-DD-MM(比如data@2020-19-03对应2020年3月19日),首先要获取当前日期,再格式化成对应字符串。注意GAS里的Date对象月份是从0开始计数的(1月对应0,12月对应11),所以要给月份值加1;同时用Utilities.formatString确保日和月是两位数字(自动补前导零),完美匹配你的文件名规则。

  2. 安全查找文件并处理
    用生成的文件名去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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 00:42:31