Комментарии — это отзывы пользователей о файле, например, предложения читателя текстового документа о том, как перефразировать предложение. Существует два типа комментариев: привязанные комментарии и непривязанные комментарии . Привязанный комментарий связан с определенным местом, например, с предложением в текстовом документе, в рамках конкретной версии документа. Напротив, непривязанный комментарий просто связан с самим документом.
Ответы прикрепляются к комментариям и представляют собой реакцию пользователя на комментарий. API Google Drive позволяет вашим пользователям добавлять комментарии и ответы к документам, созданным вашим приложением. В совокупности комментарий с ответами называется обсуждением .
Используйте параметр fields.
Для всех методов (кроме delete ) ресурса comments необходимо задать системный параметр fields , чтобы указать поля, которые должны быть возвращены в ответе. В большинстве методов ресурсов Drive это действие требуется только для возврата полей, отличных от полей по умолчанию, но для ресурса comments это обязательно. Если вы опустите параметр fields , метод вернет ошибку. Для получения дополнительной информации см. раздел «Возврат определенных полей» .
Ограничения комментариев
При работе с привязанными и непривязанными комментариями через API Google Drive действуют следующие ограничения:
| Тип комментария | Тип файла |
|---|---|
| Прикрепленный |
|
| Без привязки |
|
Добавьте привязанный комментарий к последней редакции документа.
При добавлении комментария может потребоваться привязать его к определенному участку файла. Якорь определяет область в файле, на которую ссылается комментарий. Ресурс comments определяет поле anchor в виде строки JSON.
Чтобы добавить закреплённый комментарий:
(Необязательно). Вызовите метод
listресурса `revisions, чтобы вывести список всехrevisionIDдля документа. Выполняйте этот шаг только в том случае, если вы хотите привязать комментарий к любой ревизии, кроме последней. Если вы хотите использовать последнюю ревизию, используйтеheadв качествеrevisionID.Вызовите метод
createдля ресурсаcomments, передав ему параметрfileID, ресурсcomments, содержащий комментарий, и строку привязки JSON, содержащуюrevisionID(r) и region (a).
В следующем примере кода показано, как создать привязанный комментарий:
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()
API Google Drive возвращает экземпляр объекта ресурса comments , который включает в себя строку anchor .
Добавить незакрепленный комментарий
Чтобы добавить комментарий без привязки к источнику, вызовите метод create с параметром fileId и ресурсом comments , содержащим комментарий.
Комментарий вставляется как обычный текст, но в теле ответа содержится поле htmlContent в котором отображается контент, отформатированный для показа.
В следующем примере кода показано, как создать комментарий без привязки к источнику:
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()
Добавить ответ на комментарий
Чтобы добавить ответ на комментарий, используйте метод create ресурса replies с параметрами ` fileId и commentId . В теле запроса для добавления ответа используется поле content .
Ответ вставляется в виде обычного текста, но тело ответа содержит поле htmlContent , отображаемое в формате, предназначенном для просмотра.
Метод возвращает поля, перечисленные в поле fields .
Запрос
В этом примере мы указываем параметры пути fileId и commentId , а также несколько полей.
POST https://www.googleapis.com/drive/v3/files/FILE_ID/comments/COMMENT_ID/replies?fields=id,comment
Текст запроса
{
"content": "This is a reply to a comment."
}Обработать комментарий
Ответить на комментарий можно только после его публикации.
Для обработки комментария используйте метод create ресурса replies , передав параметры fileId и commentId .
В теле запроса поле action используется для разрешения комментария. Вы также можете настроить поле content так, чтобы добавить ответ, закрывающий комментарий.
Когда комментарий разрешен, Google Drive помечает ресурс comments как resolved: true . В отличие от удаленных комментариев , разрешенные комментарии могут содержать поля htmlContent или content .
Когда ваше приложение обрабатывает комментарий, пользовательский интерфейс должен указывать на то, что комментарий рассмотрен. Например, ваше приложение может:
- Запретить дальнейшие ответы и затемнить все предыдущие ответы, а также исходный комментарий.
- Скрыть решенные комментарии.
Запрос
В этом примере мы указываем параметры пути fileId и commentId , а также несколько полей.
POST https://www.googleapis.com/drive/v3/files/FILE_ID/comments/COMMENT_ID/replies?fields=id,comment
Текст запроса
{
"action": "resolve",
"content": "This comment has been resolved."
}Оставить комментарий
Чтобы получить комментарий к файлу, используйте метод get ресурса comments с параметрами fileId и commentId . Если идентификатор комментария неизвестен, вы можете вывести список всех комментариев с помощью метода list .
Метод возвращает экземпляр ресурса comments .
Чтобы включить удаленные комментарии в результаты, установите параметр запроса includedDeleted в true .
Запрос
В этом примере мы указываем параметры пути fileId и commentId , а также несколько полей.
GET https://www.googleapis.com/drive/v3/files/FILE_ID/comments/COMMENT_ID?fields=id,comment,modifiedTime,resolved
Список комментариев
Чтобы вывести список комментариев к файлу, используйте метод list ресурса comments с параметром fileId . Метод возвращает список комментариев.
Передайте следующие параметры запроса, чтобы настроить постраничную навигацию или фильтрацию комментариев:
includeDeleted: Установитеtrue, чтобы включить удаленные комментарии. Удаленные комментарии не включают поляhtmlContentилиcontent.pageSize: Максимальное количество комментариев, отображаемых на странице.pageToken: Токен страницы, полученный из предыдущего вызова списка. Предоставьте этот токен для получения следующей страницы.startModifiedTime: Минимальное значение поляmodifiedTimeдля комментариев к результатам.
Запрос
В этом примере мы указываем параметр пути fileId , параметр запроса includeDeleted и несколько полей.
GET https://www.googleapis.com/drive/v3/files/FILE_ID/comments?includeDeleted=true&fields=(id,comment,kind,modifiedTime,resolved)
Обновить комментарий
Для обновления комментария к файлу используйте метод update ресурса comments с параметрами fileId и commentId . В теле запроса для обновления комментария используется поле content .
Логическое поле resolved в ресурсе comments доступно только для чтения. Комментарий может быть разрешен только путем отправки ответа на него. Для получения дополнительной информации см. раздел "Разрешение комментария" .
Метод возвращает поля, перечисленные в параметре запроса fields .
Запрос
В этом примере мы указываем параметры пути fileId и commentId , а также несколько полей.
PATCH https://www.googleapis.com/drive/v3/files/FILE_ID/comments/COMMENT_ID?fields=id,comment
Текст запроса
{
"content": "This comment is now updated."
}Удалить комментарий
Чтобы удалить комментарий к файлу, используйте метод delete ресурса comments с параметрами fileId и commentId .
При удалении комментария Google Drive помечает ресурс комментария как deleted: true . Удаленные комментарии не содержат полей htmlContent или content .
Запрос
В этом примере мы указываем параметры пути fileId и commentId .
DELETE https://www.googleapis.com/drive/v3/files/FILE_ID/comments/COMMENT_ID