google docs api удалить все содержимое - PullRequest
2 голосов
/ 25 февраля 2020

Я заметил из API Google Docs

Я могу сделать

{
  "requests": [
    {
      "deleteContentRange": {
        "range": {
          "startIndex": 1,
          "endIndex": 80
        }
      }
    }
  ]
}

, но если конечный индекс больше, чем общая длина символов в документе, Я получаю следующую ошибку:

{
  "error": {
    "code": 400,
    "message": "Invalid requests[0].deleteContentRange: Index 79 must be less than the end index of the referenced segment, 7.",
    "status": "INVALID_ARGUMENT"
  }
}

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

Итак: возможно ли получить endIndex каким-либо образом или удалить все содержимое другим способом?

1 Ответ

3 голосов
/ 25 февраля 2020
  • Вы хотите удалить все содержимое в Документе Google, используя Docs API.

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

Проблема:

На текущем этапе, чтобы использовать «DeleteContentRangeRequest», оба значения startIndex и endIndex требуется. Кажется, что это спецификация. Так что в вашем случае, я думаю, что is it possible to get the endIndex somehow, or delete all content another way? приводит к методу решения вашей проблемы.

Поток обходного пути:

Здесь, в качестве обходного пути, используется следующий поток.

1. Получить объект content из Google Document.

Пример команды curl выглядит следующим образом. Когда вы используете это, пожалуйста, установите идентификатор документа. В этом случае body.content(startIndex,endIndex) используется в качестве полей. По этому легко увидеть значение ответа.

curl \
  'https://docs.googleapis.com/v1/documents/###?fields=body.content(startIndex%2CendIndex)' \
  --header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \
  --header 'Accept: application/json'

Значение ответа аналогично приведенному ниже.

{
  "body": {
    "content": [
      {"endIndex": 1},
      {"startIndex": 1, "endIndex": 100},
      {"startIndex": 100, "endIndex": 200}
    ]
  }
}
  • endIndex из последнего индекса content является значением для этого.

2. Получите endIndex от объекта.

Из приведенного выше значения отклика обнаружено, что startIndex и endIndex равны 1 и 199 соответственно. Если endIndex равно 200, возникает ошибка. Пожалуйста, будьте осторожны с этим. Поэтому, пожалуйста, уменьшите 1 из него.

3. Удалите все содержимое, используя startIndex и endIndex.

Пример команды curl выглядит следующим образом.

curl --request POST \
  'https://docs.googleapis.com/v1/documents/###:batchUpdate' \
  --header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '{"requests":[{"deleteContentRange":{"range":{"startIndex":1,"endIndex":199}}}]}'

Ссылки:

Если я неправильно вас понял вопрос, и это было не то направление, которое вы хотите, я прошу прощения.

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