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

从Google Drive下载前检查文件修改日期的技术问题

解决Google Drive云端与本地CSV文件修改日期对比并仅下载更新文件的问题

问题核心

你尝试用file.mtime(as_id(csv_files [1, ]))获取Google Drive云端文件的修改日期时出错,本质原因是file.mtime()是R基础函数,仅能读取本地文件系统的文件时间,无法直接访问云端文件的元数据。以下是完整的解决方案,实现仅下载云端已更新的CSV文件的需求。

完整实现步骤

1. 获取云端CSV文件及修改时间

使用googledrive包的drive_reveal()函数显式获取文件的修改时间元数据(drive_ls()返回的结果默认已包含该字段,但显式调用可确保字段存在):

library(googledrive)

# 定义云端文件夹ID/URL
folder_url <- "https://drive.google.com/drive/u/0/folders/1-wXe9h97H2_cKTcdHtFBGXMdTdjsgskdjhgtAq"
folder <- drive_get(as_id(folder_url))

# 获取文件夹内所有CSV文件
csv_files <- drive_ls(folder, type = "csv")

# 显式获取并添加文件修改时间字段
csv_files <- drive_reveal(csv_files, "modifiedTime")

此时csv_files$modifiedTime即为每个云端CSV文件的最后修改时间(UTC时区)。

2. 对比云端与本地文件时间并下载更新

假设本地CSV文件存储在./local_csvs目录下,遍历每个云端文件,对比时间后决定是否下载:

# 定义本地存储目录
local_dir <- "./local_csvs"
if (!dir.exists(local_dir)) dir.create(local_dir)

# 遍历所有云端CSV文件
for (i in seq(nrow(csv_files))) {
  # 获取当前云端文件信息
  cloud_file <- csv_files[i, ]
  cloud_file_name <- cloud_file$name
  cloud_mtime <- as.POSIXct(cloud_file$modifiedTime, tz = "UTC")
  # 转换为本地时区,避免时区差异导致对比错误
  cloud_mtime_local <- format(cloud_mtime, tz = Sys.timezone())
  cloud_mtime_local <- as.POSIXct(cloud_mtime_local)
  
  # 构建本地文件路径
  local_file_path <- file.path(local_dir, cloud_file_name)
  
  if (file.exists(local_file_path)) {
    # 获取本地文件修改时间
    local_mtime <- file.mtime(local_file_path)
    
    # 对比时间:云端更新则覆盖下载
    if (cloud_mtime_local > local_mtime) {
      drive_download(cloud_file, path = local_file_path, overwrite = TRUE)
      cat("已更新下载:", cloud_file_name, "\n")
    } else {
      cat("本地文件已是最新:", cloud_file_name, "\n")
    }
  } else {
    # 本地无此文件,直接下载
    drive_download(cloud_file, path = local_file_path)
    cat("首次下载:", cloud_file_name, "\n")
  }
}

关键说明

  • 时区统一:云端返回的modifiedTime是UTC时区,需转换为本地时区后再与file.mtime()返回的本地时间对比,避免因时区差导致错误判断。
  • drive_reveal():除了modifiedTime,还可以用该函数获取其他元数据(如createdTime、size等),满足更多对比需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 22:05:12