如何通过 Python API 以编程方式通过电子邮件共享 Google 表格?

问题描述 投票:0回答:1

我有我想要修改的 Google 表格列表,以便特定电子邮件被授予

Editor
访问权限。但是,我不想手动执行此操作,而是希望能够使用 Google Python 客户端以编程方式执行此操作。

我知道我可以使用 Drive API,

SCOPES = [
    'https://www.googleapis.com/auth/spreadsheets',
    'https://www.googleapis.com/auth/drive.metadata',
    'https://www.googleapis.com/auth/drive.file',      
    'https://www.googleapis.com/auth/drive',
]

drive_client = discovery.build('drive', 'v3', http=creds.authorize(Http()))

但是,我仍然不确定如何针对特定的 Google 表格(可能不影响现有权限)向实体/电子邮件授予

Editor
Viewer
权限。

python google-sheets google-cloud-platform google-drive-api
1个回答
0
投票

您可以使用 Google Drive API 为特定的 Google 表格授予特定电子邮件地址的权限。下面是一个使用 Google Drive API 的 Python 示例代码片段:

from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError
import google.auth

# Set up authentication
creds, project_id = google.auth.default()
service = build('drive', 'v3', credentials=creds)

# Define the email address and permissions to be granted
email = '[email protected]'
permission = {
    'type': 'user',
    'role': 'writer',
    'emailAddress': email
}

# Define the ID of the Google Sheet to modify
file_id = 'YOUR_SPREADSHEET_ID'

# Call the Drive API to grant the permissions
try:
    # Get the existing permissions for the file
    permissions = service.permissions().list(fileId=file_id).execute()
    # Add the new permission to the list of permissions
    permissions['permissions'].append(permission)
    # Update the permissions for the file
    response = service.permissions().update(fileId=file_id, body=permissions).execute()
    print(f'Permissions granted for email {email} for file {file_id}')
except HttpError as error:
    print(f'An error occurred: {error}')

此代码定义了一个电子邮件地址和要授予的角色(在本例中为 writer),然后将其添加到指定 Google Sheet 的权限列表中。请注意,此代码假定您已经使用 google-auth 库设置了身份验证,并且您已经授权了必要的范围(如您在 SCOPES 变量中定义的那样)。

另请注意,如果您授予权限的电子邮件地址已经可以访问该文件,这只会添加一个额外的权限。如果您想替换现有权限,您需要先删除旧权限。您可以使用 Drive API 的 permissions().delete() 方法执行此操作。

© www.soinside.com 2019 - 2024. All rights reserved.