in

Comment modifier les autorisations de Google Sheet avec Python


COMMENT CHANGER LES AUTORISATIONS DES FEUILLES DE CALCUL GOOGLE AVEC PYTHON GOOGLE API CLIENT

Si vous travaillez sur des projets collaboratifs dans des feuilles de calcul Google et que vous souhaitez accorder des autorisations à un utilisateur spécifique pour certaines feuilles, vous pouvez le faire facilement avec l’API Google Drive et Python. Dans ce guide, nous allons vous montrer comment changer les autorisations des feuilles de calcul Google en utilisant Python Google API Client.

CRÉATION DE LA LISTE DES ID DE FEUILLES DE CALCUL

Tout d’abord, il faut créer une liste des ID de feuilles de calcul Google pour lesquelles nous allons changer les autorisations. Cette liste peut être créée en utilisant des identifiants de feuilles de calcul uniques.

INFÉRENCE DES IDENTIFIANTS PAR DEFAUT

Ensuite, il faut inférer les identifiants par défaut de l’application et créer le service pour Google Drive. Ceci est important pour accéder aux données en lecture et en écriture sur votre compte Google Drive. Pour cela, il faut utiliser le code Python suivant :

“` python
import google.auth
from googleapiclient.discovery import build

def create_service() -> Resource:
“””
Creates a Google Drive (v3) service to interact with the API
“””
scopes = [
‘https://www.googleapis.com/auth/spreadsheets’,
‘https://www.googleapis.com/auth/drive’,
]
creds, project_id = google.auth.default(scopes=scopes)
service = build(‘drive’, ‘v3’, credentials=creds, cache_discovery=False)
return service
“`
Il est important de spécifier la portée d’accès en définissant un tableau de chaînes de caractères déclarant les autorisations, qui peuvent être des autorisations de lecture, d’écriture, de suppression, etc.

CRÉATION D’UNE CLASSE PERMISSION

Ensuite, il faut créer une classe Permission qui contiendra uniquement les champs nécessaires pour spécifier une autorisation. Cette classe est définie en respectant le modèle de la ressource REST Permission.

“` python
from dataclasses import dataclass

@dataclass
class Permission:
“””
Class that corresponds to the `permission` REST resource
https://developers.google.com/drive/api/reference/rest/v3/permissions#Permission
“””
type: str
role: str
emailAddress: str

def __post__init__(self):
“””
Validate input
“””
allowed_types = [‘user’, ‘group’, ‘domain’, ‘anyone’]
if self.type not in allowed_types:
raise ValueError(f’`{self.type}` is not a valid type. {allowed_types=}’)

allowed_roles = [‘commenter’, ‘reader’, ‘writer’, ‘fileOrganizer’, ‘organizer’, ‘owner’]
if self.role not in allowed_roles:
raise ValueError(f’`{self.role}` is not a valid role. {allowed_roles=}’)
“`

CRÉATION D’UNE FONCTION DE CRÉATION DE PERMISSION

Ensuite, il faut écrire une fonction qui prendra des instances du service et des autorisations, ainsi qu’un identifiant de fichier, et tentera de créer une nouvelle autorisation. Cette fonction utilise l’API request de l’API Google Drive.

“` python
from typing import Optional
from googleapiclient.discovery import Resource
from googleapiclient.errors import HttpError

def create_permission(
service: Resource,
permission: Permission,
file_id: str,
skip_on_failure: Optional[bool] = True,
):
“””
Creates a new `permission` for the specified `file_id`
“””
logging.info(f’Creating new permission {permission} for {file_id=}’)
try:
request = service.permissions().create(
fileId=file_id,
body=asdict(permission),
sendNotificationEmail=False,
)
response = request.execute()
logging.info(f’New permission for {file_id=}: {response=}’)
except HttpError as error:
logging.error(f’An error has occurred while trying to grant {permission=} to {file_id=}’)
logging.error(f’Error was: {error}’)

if not skip_on_failure:
raise error
“`

CRÉATION DE LA FONCTION MAIN POUR CHANGER LES AUTORISATIONS

Enfin, nous pouvons écrire notre fonction main pour rassembler toutes les pièces et finalement partager les feuilles de calcul Google d’intérêt avec notre utilisateur cible. Cette fonction utilise la fonction create_permission créée précédemment pour chaque ID de feuille de calcul spécifié dans la liste.

“` python
def main():
google_sheet_ids = [
‘abc-1234’,
‘def-5678’,
‘ghi-9123′,
]

service = create_service()

permission = Permission(type=’user’, role=’writer’, emailAddress=’[email protected]’)

for file_id in google_sheet_ids:
create_permission(service=service, permission=permission, file_id=file_id)
“`

Ainsi, en utilisant l’API Google Drive et Python Google API Client, il est facile de changer les autorisations des feuilles de calcul Google. Cela peut être extrêmement utile pour travailler sur des projets collaboratifs. N’hésitez pas à explorer davantage les capacités de ces outils pour découvrir toutes les possibilités qu’ils offrent.

*SOURCES :*
– [Google API Documentation](https://developers.google.com/docs/api)
– [StackOverflow – Google Drive API to share sheets with view/edit rights](https://stackoverflow.com/questions/34965719/google-drive-api-to-share-sheets-with-view-edit-rights)

What do you think?

Written by Barbara

Leave a Reply

Your email address will not be published. Required fields are marked *

Générateur de jingles par l’IA

L’adaptation de One Piece de Netflix semble avoir connu quelques difficultés.