如何通过Python将服务账号创建的Google Sheet所有权转移至个人账号?
解决Google Sheet所有权转移的403错误
需要修改的核心内容:
- 将权限体中的
role从'writer'改为'owner':转移所有权必须指定角色为所有者,writer角色不具备触发所有权转移的权限。 - 修正
transferOwnership的值类型:把字符串'true'改为布尔值True,Drive API要求该字段为布尔类型而非字符串。 - 移除
pendingOwner字段:当调用接口时指定transferOwnership=True,API会自动处理待确认所有者的流程,无需手动设置该字段。
修改后的完整代码:
from google.oauth2 import service_account from googleapiclient.discovery import build creds = service_account.Credentials.from_service_account_file('credentials.json') service = build('drive', 'v3', credentials=creds) permission = { 'type': 'user', 'role': 'owner', # 修改为owner角色 'transferOwnership': True, # 改为布尔值类型 'emailAddress': new_owner_email } service.permissions().create( fileId=sheet_id, body=permission, transferOwnership=True ).execute()
后续操作说明:
代码执行成功后,目标个人账号会收到Google Drive发送的所有权转移邀请邮件,需手动点击邮件中的链接接受邀请,才能完成最终的所有权变更。完成后,原服务账号将不再拥有该Google Sheet的所有权。
内容的提问来源于stack exchange,提问作者Mohit Aswani
相关产品推荐
相关产品推荐

