Применить оригинальные комментарии в скопированном документе - PullRequest
0 голосов
/ 05 ноября 2019

Я пытаюсь сделать копию документа с комментариями с помощью API диска Google. Сама копия завершается успешно, но скопированный документ создается без каких-либо комментариев. Я попытался зациклить все комментарии в исходном документе и применить те к скопированному документу, чтобы преодолеть это, и это действительно применяет все содержимое всех комментариев, но со мной как автор для комментариев. Я хочу, чтобы оригинальный автор также был автором комментария в копии.

Я понимаю, что такое поведение, вероятно, требуется, иначе я мог бы добавить комментарии, которые, похоже, были получены от кого-то другого, но если я открою какой-либо документ с комментариями на диске Google, появится Файл -> Создать копиюу которого есть флажок для копирования всех комментариев:

enter  image description here

Если я это сделаю, будет создана новая копия и добавлены комментарии от оригинального автора (с пометкой о том, что комментарий скопирован из оригинального документа). Есть ли способ сделать это из API?

1 Ответ

0 голосов
/ 05 ноября 2019

Прежде всего, отвечая на ваши сомнения по поводу комментария, который вы сделали. Да, все языки заключают REST-вызовы в API.

Итак, я проверял Drive API, используя Попробуйте этот API , и комментарии не могут быть скопированы так, как вы этого хотите.

Поэтому, в качестве обходного пути (вот почему я спросил вас о языке, который вы используете, чтобы иметь возможность создавать пример кода), вы можете использовать учетную запись службы чтобы выдать себя за любого пользователя, которого вы хотите, и таким образом, комментарий будет зарегистрирован, как если бы он сделал это.

Я перечислю вам серию ссылок, которые помогут вам настроить служебную учетную запись, прежде чем ее использовать.

1) Включить API вы хотите(в данном случае только Drive API)

2) Создайте учетную запись службы и учетные данные .

3) Делегируйте полномочия по всему домену вашей службе .

4) Затем вы можете использовать следующий код для создания нового комментария от имени другого пользователя:

from googleapiclient import discovery, errors
from httplib2 import Http
from oauth2client import file, client, tools
from google.oauth2 import service_account

SERVICE_ACCOUNT_FILE = 'service_account.json'
SCOPES = ['https://www.googleapis.com/auth/drive']

# The user we want to "impersonate"
USER_EMAIL = "impersonated-user@your-domain.com"

# Set the credentials using the .json and the SCOPES
credentials = service_account.Credentials.\
    from_service_account_file(SERVICE_ACCOUNT_FILE, scopes= SCOPES)
delegated_credentials = credentials.with_subject(USER_EMAIL)

try:
    # Insert the comment
    service = discovery.build('drive', 'v3', credentials=delegated_credentials)
    service.comments().create(fileId="your file id", fields="*", body={
        "content": "TESTTT"
    }).execute()

except errors.HttpError as err:
        print('\n---------------You have the following error-------------')
        print(err)
        print('---------------You have the following error-------------\n')

Уведомление

Только учетные записи службыдоступно, если у вас есть учетная запись G Suite и у вас есть права администратора.

Документы

Для создания кода, который я вам передал, я получил помощь по следующим темам:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...