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

如何用Google Apps Script按CSV内容批量重命名谷歌云端硬盘文件

Google Apps Script 批量重命名CSV文件实现方案

核心实现代码

function batchRenameCSVFiles() {
  // 替换为你的目标文件夹ID(可从文件夹URL中获取)
  const folderId = "你的文件夹ID";
  const folder = DriveApp.getFolderById(folderId);
  const files = folder.getFilesByType(MimeType.CSV);
  
  while (files.hasNext()) {
    const file = files.next();
    const fileName = file.getName();
    // 判断文件前缀是IN还是OUT
    let prefix = "";
    if (fileName.toLowerCase().includes("in_history")) {
      prefix = "IN";
    } else if (fileName.toLowerCase().includes("out_history")) {
      prefix = "OUT";
    } else {
      // 非目标文件跳过
      continue;
    }
    
    // 读取CSV内容
    const csvContent = file.getBlob().getDataAsString();
    const rows = csvContent.split("\n").filter(row => row.trim() !== "");
    if (rows.length <= 1) { // 跳过只有表头的空文件
      continue;
    }
    
    // 提取第三列(索引为2,因为数组从0开始)的时间戳
    const timestamps = rows.slice(1).map(row => {
      const columns = row.split(",");
      return columns[2] ? parseInt(columns[2].trim(), 10) : null;
    }).filter(ts => ts !== null);
    
    if (timestamps.length === 0) {
      continue;
    }
    
    // 找到最早和最晚时间戳
    const minTs = Math.min(...timestamps);
    const maxTs = Math.max(...timestamps);
    
    // 转换为yyyy/mm/dd格式
    const formatDate = (timestamp) => {
      const date = new Date(timestamp * 1000); // UTC时间戳转毫秒
      const year = date.getUTCFullYear();
      const month = String(date.getUTCMonth() + 1).padStart(2, "0");
      const day = String(date.getUTCDate()).padStart(2, "0");
      return `${year}/${month}/${day}`;
    };
    
    const startDate = formatDate(minTs);
    const endDate = formatDate(maxTs);
    
    // 生成新文件名
    const newFileName = `${prefix} - ${startDate} - ${endDate}.csv`;
    // 重命名文件
    file.setName(newFileName);
    console.log(`已重命名:${fileName} → ${newFileName}`);
  }
}

关键部分说明

  • 定位文件夹:通过DriveApp.getFolderById获取目标文件夹,需替换成你自己的文件夹ID(从浏览器地址栏URL中提取,比如https://drive.google.com/drive/folders/XXXXXX里的XXXXXX)。
  • 遍历CSV文件:用getFilesByType(MimeType.CSV)筛选文件夹内所有CSV文件,避免处理其他类型文件。
  • 判断前缀:通过原文件名包含的in_history/out_history关键词区分IN/OUT类型,不匹配的文件直接跳过。
  • 读取CSV内容:通过getBlob().getDataAsString()获取文件文本内容,按行拆分后过滤空行,跳过只有表头的无效文件。
  • 处理时间戳:提取第三列的UTC时间戳(注意数组索引是2),过滤无效值后取最大/最小值,再转换为yyyy/mm/dd格式的UTC日期。
  • 重命名文件:拼接新文件名后调用setName完成重命名,控制台输出日志方便排查。

使用注意事项

  1. 首次运行需要授权:打开Google Apps Script编辑器,粘贴代码后点击运行,按提示完成授权(属于正常Google API权限请求)。
  2. 建议先测试:先在测试文件夹放几个CSV文件,确认逻辑正确后再批量处理所有文件。
  3. 时间戳兼容性:代码假设第三列是秒级UTC时间戳,如果是毫秒级,去掉formatDate函数里的* 1000即可。
  4. 文件名冲突:如果生成的新文件名已存在,Google Drive会自动添加序号(比如(1)),需避免冲突可在代码里增加文件名重复检查逻辑。

内容的提问来源于stack exchange,提问作者SayMyName

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 16:10:27