You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何通过Google Colab与Google Drive API基于CSV数据为Google Drive子文件夹分配专属访问权限

没问题,这个需求用Google Colab+Drive API完全能实现,我给你梳理一套清晰的步骤,跟着做就行:

整体实现流程

1. 前期准备工作

  • 先把你的CSV文件整理规范,确保包含姓名ID编号邮箱地址三列,且没有空值或格式错误
  • 提前在Google Drive中创建好目标父文件夹,记住它的文件夹ID(浏览器地址栏里https://drive.google.com/drive/folders/XXXXXX中的XXXXXX就是ID)

2. Colab环境配置

打开Google Colab新建笔记本,先完成API授权和依赖安装:

  • 安装必要的Python库:
!pip install google-api-python-client google-auth-httplib2 google-auth-oauthlib pandas
  • 授权Colab访问你的Google Drive:
from google.colab import drive
drive.mount('/content/drive')

运行后会弹出授权链接,按提示登录你的Google账号,复制授权码粘贴到输入框即可完成挂载。

3. 核心代码实现

把下面的代码复制到Colab单元格中,记得替换CSV文件路径父文件夹ID这两个关键参数:

import pandas as pd
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError
from google.oauth2.credentials import Credentials

# 1. 初始化Drive API服务
creds = Credentials.from_authorized_user_info(drive.auth._auth_manager.credentials.to_json())
drive_service = build('drive', 'v3', credentials=creds)

# 2. 读取用户CSV文件(替换成你的实际文件路径)
csv_file_path = '/content/drive/MyDrive/用户信息列表.csv'
user_df = pd.read_csv(csv_file_path)

# 3. 替换成你的父文件夹ID
parent_folder_id = '你的父文件夹ID'

# 4. 遍历用户创建文件夹并设置权限
for index, row in user_df.iterrows():
    user_name = row['姓名']
    user_id = row['ID编号']
    user_email = row['邮箱地址']
    folder_name = f"{user_name}_{user_id}"
    
    try:
        # 创建子文件夹
        folder_metadata = {
            'name': folder_name,
            'mimeType': 'application/vnd.google-apps.folder',
            'parents': [parent_folder_id]
        }
        created_folder = drive_service.files().create(body=folder_metadata, fields='id').execute()
        folder_id = created_folder.get('id')
        print(f"✅ 已创建文件夹:{folder_name} | ID:{folder_id}")
        
        # 移除默认的非所有者权限(确保只有指定用户能访问)
        existing_perms = drive_service.permissions().list(fileId=folder_id).execute()
        for perm in existing_perms.get('permissions', []):
            if perm['role'] != 'owner':
                drive_service.permissions().delete(fileId=folder_id, permissionId=perm['id']).execute()
        
        # 给对应邮箱用户添加权限(role可选'writer'可编辑 / 'reader'仅查看)
        perm_metadata = {
            'type': 'user',
            'role': 'writer',
            'emailAddress': user_email
        }
        drive_service.permissions().create(fileId=folder_id, body=perm_metadata).execute()
        print(f"🔑 已设置权限:{user_email} 可访问 {folder_name}\n")
        
    except HttpError as err:
        print(f"❌ 处理用户 {user_name} 时出错:{err}\n")

4. 关键注意事项

  • 权限调整:如果只需要用户查看文件夹,把代码中的'role': 'writer'改成'role': 'reader'即可
  • 路径与ID校验:一定要确认CSV文件路径和父文件夹ID的正确性,否则会导致文件夹创建位置错误或读取失败
  • 错误处理:代码中加入了异常捕获,单个用户处理失败不会中断整个流程,错误信息会直接打印出来

5. 结果验证

代码运行完成后,去你的Google Drive父文件夹查看,应该已经生成所有姓名_ID编号格式的子文件夹。可以用其中一个用户的邮箱登录Drive,确认只能看到自己对应的文件夹,无法访问他人的文件夹。

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

火山引擎 最新活动