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

如何用Google Apps Script将Google Drive文件下载到本地电脑?

问题分析

你的代码核心问题是Google Apps Script(GAS)运行在Google云端服务器上,没有权限直接访问本地电脑的文件系统。你当前的代码只是把文件在Google Drive里复制了一遍再扔进回收站,完全没涉及本地存储,这就是无法下载到本地的原因。

解决方案

方案1:本地脚本+Drive API实现下载(支持开机自动运行)

要写入本地文件夹,必须用本地运行的代码结合Google Drive API,直接从Drive拉取文件保存到本地。以下是Python示例:

步骤1:准备Drive API权限

  • 登录Google Cloud控制台,创建新项目并启用「Google Drive API」
  • 创建服务账号,下载JSON格式的密钥文件

步骤2:本地下载脚本

import os
from google.oauth2.service_account import Credentials
from googleapiclient.discovery import build
from googleapiclient.http import MediaIoBaseDownload
import io

# 配置参数
TARGET_FOLDER_NAME = "DownloadTrys"
LOCAL_SAVE_PATH = "C:\\Users\\XXXX\\Desktop\\personal\\"
SERVICE_KEY_PATH = "path/to/your/service-account-key.json"

# 初始化Drive客户端
creds = Credentials.from_service_account_file(SERVICE_KEY_PATH, scopes=["https://www.googleapis.com/auth/drive.readonly"])
drive_service = build("drive", "v3", credentials=creds)

# 查找目标文件夹ID
folder_result = drive_service.files().list(
    q=f"name='{TARGET_FOLDER_NAME}' and mimeType='application/vnd.google-apps.folder'",
    fields="files(id)"
).execute()
folder_id = folder_result["files"][0]["id"]

# 获取文件夹内所有文件
files = drive_service.files().list(
    q=f"'{folder_id}' in parents",
    fields="files(id, name)"
).execute()["files"]

# 创建本地文件夹(不存在则新建)
os.makedirs(LOCAL_SAVE_PATH, exist_ok=True)

# 批量下载文件
for file in files:
    file_id = file["id"]
    file_name = file["name"]
    local_file_path = os.path.join(LOCAL_SAVE_PATH, file_name)
    
    # 跳过已存在的文件(可选)
    if os.path.exists(local_file_path):
        continue
    
    # 执行下载
    request = drive_service.files().get_media(fileId=file_id)
    file_handler = io.FileIO(local_file_path, "wb")
    downloader = MediaIoBaseDownload(file_handler, request)
    
    done = False
    while not done:
        status, done = downloader.next_chunk()
        print(f"{file_name}: {int(status.progress()*100)}% 完成")

print("所有文件下载完成")

步骤3:设置开机自动运行

  • Windows:把脚本打包成批处理文件,放到「启动」文件夹(通过shell:startup打开),或用任务计划程序设置「登录时」触发
  • macOS/Linux:用cron或LaunchAgent配置开机启动

方案2:GAS云端生成链接+本地同步(支持休眠时云端运行,开机后本地同步)

如果想利用GAS的云端触发器(不受本地电脑状态影响),可以让GAS生成文件下载链接,再由本地脚本定时拉取链接并下载:

步骤1:GAS云端脚本(生成下载链接)

function generateDownloadLinks() {
  const driveApp = DriveApp;
  const folder = driveApp.getFoldersByName('DownloadTrys').next();
  const files = folder.getFiles();
  
  const linkList = [];
  while(files.hasNext()) {
    const file = files.next();
    // 获取文件下载链接(需确保文件已设置可公开访问,或使用授权链接)
    const downloadUrl = file.getDownloadUrl();
    linkList.push(`${file.getName()},${downloadUrl}`);
  }
  
  // 把链接保存到Drive的文本文件,供本地读取
  const linkFile = driveApp.createFile('download_links.txt', linkList.join('\n'), 'text/plain');
  folder.addFile(linkFile);
}
  • 设置云端触发器:在脚本编辑器中,添加「时间驱动」触发器(比如每天运行一次),无需依赖本地电脑状态。

步骤2:本地同步脚本

编写Python/PowerShell脚本,定时从Drive下载download_links.txt,遍历链接下载文件到指定文件夹,再设置本地定时任务在开机时运行。

关于「休眠时运行」的说明
  • 直接在电脑休眠时下载到本地指定文件夹:不可能,休眠时电脑硬件处于低功耗状态,本地脚本无法运行,也无法写入本地存储。
  • 可行替代:用GAS云端触发器在休眠时生成下载链接/同步文件到云存储,等电脑开机后,本地脚本再把文件同步到指定文件夹。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 21:30:54