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

如何获取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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 22:54:02