Les commentaires sont des remarques fournies par les utilisateurs sur un fichier. Par exemple, un lecteur d'un document de traitement de texte peut suggérer de reformuler une phrase. Il existe deux types de commentaires : les commentaires ancrés et les commentaires non ancrés. Un commentaire ancré est associé à un emplacement spécifique, tel qu'une phrase dans un document de traitement de texte, au sein d'une version spécifique d'un document. À l'inverse, un commentaire non ancré est simplement associé au document.
Les réponses sont associées à des commentaires et représentent la réponse d'un utilisateur à un commentaire. L'API Drive permet à vos utilisateurs d'ajouter des commentaires et des réponses aux documents créés par votre application. Un commentaire et ses réponses sont appelés discussion.
Utiliser le paramètre "fields"
Pour toutes les méthodes (à l'exception de delete) sur la ressource comments, vous devez définir le paramètre système fields pour spécifier les champs à renvoyer dans la réponse. Dans la plupart des méthodes de ressources Drive, cette action n'est requise que pour renvoyer des champs non définis par défaut, mais elle est obligatoire pour la ressource comments. Si vous omettez le paramètre fields, la méthode renvoie une erreur. Pour en savoir plus, consultez Renvoyer des champs spécifiques.
Contraintes liées aux commentaires
Les contraintes suivantes s'appliquent lorsque vous utilisez des commentaires ancrés et non ancrés avec l'API Drive :
| Type de commentaire | Type de fichier |
|---|---|
| Ancré |
|
| Non ancré |
|
Ajouter un commentaire ancré à la dernière révision d'un document
Lorsque vous ajoutez un commentaire, vous pouvez l'ancrer à une région du fichier. Une ancre définit une région dans un fichier à laquelle un commentaire fait référence. La ressource comments définit le champ anchor comme une chaîne JSON.
Pour ajouter un commentaire ancré :
(Facultatif) Appelez la méthode
listsur la ressourcerevisionspour lister tous lesrevisionIDd'un document. Ne suivez cette étape que si vous souhaitez ancrer un commentaire à une révision autre que la dernière. Si vous souhaitez utiliser la dernière révision, utilisezheadpourrevisionID.Appelez la méthode
createsur la ressourcecommentsavec le paramètrefileID, une ressourcecommentscontenant le commentaire et une chaîne d'ancrage JSON contenantrevisionID(r) et la région (a).
L'exemple de code suivant montre comment créer un commentaire ancré :
Python
from google.oauth2.credentials import Credentials
from googleapiclient.errors import HttpError
# --- Configuration ---
# The ID of the file to comment on.
# Example: '1_aBcDeFgHiJkLmNoPqRsTuVwXyZ'
FILE_ID = 'FILE_ID'
# The text content of the comment.
COMMENT_TEXT = 'This is an example of an anchored comment.'
# The line number to anchor the comment to.
# Note: Line numbers are based on the revision.
ANCHOR_LINE = 10
# --- End of user-configuration section ---
SCOPES = ["https://www.googleapis.com/auth/drive"]
creds = Credentials.from_authorized_user_file("token.json", SCOPES)
def create_anchored_comment():
"""
Create an anchored comment on a specific line in a Google Doc.
Returns:
The created comment object or None if an error occurred.
"""
try:
# Build the Drive API service
service = build("drive", "v3", credentials=creds)
# Define the anchor region for the comment.
# For Google Docs, the region is typically defined by 'line' and 'revision'.
# Other file types might use different region classifiers.
anchor = {
'region': {
'kind': 'drive#commentRegion',
'line': ANCHOR_LINE,
'rev': 'head'
}
}
# The comment body.
comment_body = {
'content': COMMENT_TEXT,
'anchor': anchor
}
# Create the comment request.
comment = (
service.comments()
.create(fileId=FILE_ID, fields="*", body=comment_body)
.execute()
)
print(f"Comment ID: {comment.get('id')}")
return comment
except HttpError as error:
print(f"An error occurred: {error}")
return None
create_anchored_comment()
L'API Drive renvoie une instance de l'objet de ressource comments, qui inclut la chaîne anchor.
Ajouter un commentaire non ancré
Pour ajouter un commentaire non ancré, appelez la méthode create avec le paramètre fileId et une ressource comments contenant le commentaire.
Le commentaire est inséré en texte brut, mais le corps de la réponse fournit un champ htmlContent contenant du contenu mis en forme pour l'affichage.
L'exemple de code suivant montre comment créer un commentaire non ancré :
Python
from google.oauth2.credentials import Credentials
from googleapiclient.errors import HttpError
# --- Configuration ---
# The ID of the file to comment on.
# Example: '1_aBcDeFgHiJkLmNoPqRsTuVwXyZ'
FILE_ID = 'FILE_ID'
# The text content of the comment.
COMMENT_TEXT = 'This is an example of an unanchored comment.'
# --- End of user-configuration section ---
SCOPES = ["https://www.googleapis.com/auth/drive"]
creds = Credentials.from_authorized_user_file("token.json", SCOPES)
def create_unanchored_comment():
"""
Create an unanchored comment on a specific line in a Google Doc.
Returns:
The created comment object or None if an error occurred.
"""
try:
# Build the Drive API service
service = build("drive", "v3", credentials=creds)
# The comment body. For an unanchored comment,
# omit the 'anchor' property.
comment_body = {
'content': COMMENT_TEXT
}
# Create the comment request.
comment = (
service.comments()
.create(fileId=FILE_ID, fields="*", body=comment_body)
.execute()
)
print(f"Comment ID: {comment.get('id')}")
return comment
except HttpError as error:
print(f"An error occurred: {error}")
return None
create_unanchored_comment()
Répondre à un commentaire
Pour ajouter une réponse à un commentaire, utilisez la méthode create sur la ressource replies avec les paramètres fileId et commentId. Le corps de la requête utilise le champ content pour ajouter la réponse.
La réponse est insérée sous forme de texte brut, mais le corps de la réponse fournit un champ htmlContent contenant du contenu mis en forme pour l'affichage.
La méthode renvoie les champs listés dans le champ fields.
Demande
Dans cet exemple, nous fournissons les paramètres de chemin d'accès fileId et commentId, ainsi que plusieurs champs.
POST https://www.googleapis.com/drive/v3/files/FILE_ID/comments/COMMENT_ID/replies?fields=id,comment
Corps de la requête
{
"content": "This is a reply to a comment."
}Fermer un commentaire
Pour résoudre un commentaire, vous devez y répondre.
Pour résoudre un commentaire, utilisez la méthode create sur la ressource replies avec les paramètres fileId et commentId.
Le corps de la requête utilise le champ action pour résoudre le commentaire. Vous pouvez également définir le champ content pour ajouter une réponse qui clôture le commentaire.
Lorsqu'un commentaire est résolu, Drive marque la ressource comments comme resolved: true. Contrairement aux commentaires supprimés, les commentaires résolus peuvent inclure les champs htmlContent ou content.
Lorsque votre application résout un commentaire, votre UI doit indiquer que le commentaire a été traité. Par exemple, votre application peut :
- Interdire d'autres réponses et atténuer toutes les réponses précédentes ainsi que le commentaire initial.
- Masquez les commentaires résolus.
Demande
Dans cet exemple, nous fournissons les paramètres de chemin d'accès fileId et commentId, ainsi que plusieurs champs.
POST https://www.googleapis.com/drive/v3/files/FILE_ID/comments/COMMENT_ID/replies?fields=id,comment
Corps de la requête
{
"action": "resolve",
"content": "This comment has been resolved."
}Obtenir un commentaire
Pour obtenir un commentaire sur un fichier, utilisez la méthode get sur la ressource comments avec les paramètres fileId et commentId. Si vous ne connaissez pas l'ID du commentaire, vous pouvez lister tous les commentaires à l'aide de la méthode list.
La méthode renvoie une instance d'une ressource comments.
Pour inclure les commentaires supprimés dans les résultats, définissez le paramètre de requête includedDeleted sur true.
Demande
Dans cet exemple, nous fournissons les paramètres de chemin d'accès fileId et commentId, ainsi que plusieurs champs.
GET https://www.googleapis.com/drive/v3/files/FILE_ID/comments/COMMENT_ID?fields=id,comment,modifiedTime,resolved
Lister les commentaires
Pour lister les commentaires sur un fichier, utilisez la méthode list sur la ressource comments avec le paramètre fileId. La méthode renvoie une liste de commentaires.
Transmettez les paramètres de requête suivants pour personnaliser la pagination ou filtrer les commentaires :
includeDeleted: définissez la valeur surtruepour inclure les commentaires supprimés. Les commentaires supprimés n'incluent pas les champshtmlContentnicontent.pageSize: nombre maximal de commentaires à renvoyer par page.pageToken: jeton de page reçu d'un appel de liste précédent. Fournissez ce jeton pour récupérer la page suivante.startModifiedTime: valeur minimale du champmodifiedTimepour les commentaires sur les résultats.
Demande
Dans cet exemple, nous fournissons le paramètre de chemin d'accès fileId, le paramètre de requête includeDeleted et plusieurs champs.
GET https://www.googleapis.com/drive/v3/files/FILE_ID/comments?includeDeleted=true&fields=(id,comment,kind,modifiedTime,resolved)
Modifier un commentaire
Pour modifier un commentaire sur un fichier, utilisez la méthode update sur la ressource comments avec les paramètres fileId et commentId. Le corps de la requête utilise le champ content pour mettre à jour le commentaire.
Le champ booléen resolved de la ressource comments est en lecture seule. Un commentaire ne peut être résolu qu'en y répondant. Pour en savoir plus, consultez Résoudre un commentaire.
La méthode renvoie les champs listés dans le paramètre de requête fields.
Demande
Dans cet exemple, nous fournissons les paramètres de chemin d'accès fileId et commentId, ainsi que plusieurs champs.
PATCH https://www.googleapis.com/drive/v3/files/FILE_ID/comments/COMMENT_ID?fields=id,comment
Corps de la requête
{
"content": "This comment is now updated."
}Supprimer un commentaire
Pour supprimer un commentaire sur un fichier, utilisez la méthode delete sur la ressource comments avec les paramètres fileId et commentId.
Lorsqu'un commentaire est supprimé, Drive marque la ressource de commentaire comme deleted: true. Les commentaires supprimés n'incluent pas les champs htmlContent ni content.
Demande
Dans cet exemple, nous fournissons les paramètres de chemin d'accès fileId et commentId.
DELETE https://www.googleapis.com/drive/v3/files/FILE_ID/comments/COMMENT_ID