我有我想要修改的 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
权限。
您可以使用 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() 方法执行此操作。