Как на Python написать скрипт для автоматического парсинга комментариев из Google Документов через API?

Для автоматического парсинга комментариев из Google Документов через API на Python необходимо использовать Google Drive API v3, поскольку именно он предоставляет доступ к комментариям документов (не Google Docs API). Ниже приведено подробное руководство.

**Шаг 1: Настройка окружения и зависимостей**

Установите необходимые библиотеки:

pip install google-auth google-auth-oauthlib google-auth-httplib2 google-api-python-client

**Шаг 2: Создание учётных данных в Google Cloud Console**

1. Перейдите на console.cloud.google.com и создайте новый проект.
2. Включите Google Drive API в разделе «APIs & Services».
3. Создайте OAuth 2.0 Client ID (тип — Desktop App).
4. Скачайте файл credentials.json в папку проекта.

**Шаг 3: Написание скрипта**

python
import os
import csv
from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request
from googleapiclient.discovery import build

SCOPES = [‘https://www.googleapis.com/auth/drive.readonly’]

def get_credentials():
creds = None
if os.path.exists(‘token.json’):
creds = Credentials.from_authorized_user_file(‘token.json’, SCOPES)
if not creds or not creds.valid:
if creds and creds.expired and creds.refresh_token:
creds.refresh(Request())
else:
flow = InstalledAppFlow.from_client_secrets_file(‘credentials.json’, SCOPES)
creds = flow.run_local_server(port=0)
with open(‘token.json’, ‘w’) as token:
token.write(creds.to_json())
return creds

def get_comments(doc_id):
creds = get_credentials()
service = build(‘drive’, ‘v3′, credentials=creds)
comments = []
page_token = None
while True:
response = service.comments().list(
fileId=doc_id,
fields=’comments(id,author,content,createdTime,resolved,replies),nextPageToken’,
pageToken=page_token,
pageSize=100,
includeDeleted=False
).execute()
comments.extend(response.get(‘comments’, []))
page_token = response.get(‘nextPageToken’)
if not page_token:
break
return comments

def save_to_csv(comments, filename=’comments.csv’):
with open(filename, ‘w’, newline=», encoding=’utf-8′) as f:
writer = csv.writer(f)
writer.writerow([‘ID’, ‘Автор’, ‘Email’, ‘Комментарий’, ‘Дата создания’, ‘Решён’, ‘Ответы’])
for c in comments:
author = c.get(‘author’, {})
replies = ‘; ‘.join([r.get(‘content’, ») for r in c.get(‘replies’, [])])
writer.writerow([
c.get(‘id’),
author.get(‘displayName’, »),
author.get(’emailAddress’, »),
c.get(‘content’, »),
c.get(‘createdTime’, »),
c.get(‘resolved’, False),
replies
])

if __name__ == ‘__main__’:
DOC_ID = ‘ВАШ_ID_ДОКУМЕНТА’
comments = get_comments(DOC_ID)
save_to_csv(comments)
print(f’Сохранено {len(comments)} комментариев.’)

**Шаг 4: Получение ID документа**

ID документа находится в URL: `https://docs.google.com/document/d/ЗДЕСЬ_ID/edit`

**Важные нюансы:**
— Токен авторизации сохраняется в token.json и переиспользуется при повторных запусках.
— Параметр `includeDeleted=False` исключает удалённые комментарии.
— Пагинация через `nextPageToken` позволяет получить все комментарии даже при их большом количестве.
— Для сервисного аккаунта (без интерактивной авторизации) используйте `service_account.Credentials` и предоставьте документу доступ для этого аккаунта.

Скрипт сохраняет все комментарии с метаданными в CSV-файл, готовый для дальнейшего анализа.


Задайте вопрос нейросети

Не нашли ответ? Спросите ИИ — он подготовит развёрнутую статью.