Как добавить контент в ячейку таблицы с помощью запроса google-docs-api? - PullRequest
0 голосов
/ 24 июня 2019

Я хочу добавить контент в ячейку таблицы в Google Doc, но способ, описанный в документации, не работает.

Что не так с моим запросом?Когда я предоставляю 1 для index параметра insertText запроса, он просто вставляет текст перед таблицей.Когда я предоставляю 2 в качестве значения параметра index, я получаю сообщение об ошибке: «Недопустимые запросы [1] .insertText: индекс вставки должен находиться внутри границ существующего абзаца. Вы по-прежнему можете создавать новые абзацы, вставляя символы новой строки».

{
  "requests": [
    {
      "insertTable": {
        "endOfSegmentLocation": {
          "segmentId": ""
        },
        "columns": 1,
        "rows": 1
      }
    },
    {
      "insertText": {
        "location": {
          "index": 1
        },
        "text": "Cell content"
      }
    }
  ]
}

Я ожидаю, что текст должен быть вставлен в единственную ячейку таблицы.

1 Ответ

0 голосов
/ 25 июня 2019
  • Вы хотите добавить таблицу (1 x 1) к последнему телу.
  • Вы хотите вставить текст в 1-ю ячейку.

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

В случае, когда новая таблица добавляется к последнему телу ("segmentId": "" означает, что таблица добавляется к последнему телу.), Сначала должен быть известен начальный индекс таблицы. Так как насчет следующих потоков?

Поток 1:

В этом потоке предполагается, что индекс последнего тела неизвестен.

  1. Добавить таблицу, используя следующее тело запроса.

    {
      "requests": [
        {
          "insertTable": {
            "endOfSegmentLocation": {
              "segmentId": ""
            },
            "columns": 1,
            "rows": 1
          }
        }
      ]
    }
    
  2. Получить начальный индекс таблицы, используя следующую конечную точку. В это время вы также можете получить начальный индекс ячейки.

    GET https://docs.googleapis.com/v1/documents/{fileId}?fields=body(content(startIndex%2Ctable))
    
  3. Вставьте текст в ячейку. В этом случае предполагается, что извлеченный начальный индекс добавленной таблицы равен 10. Начальный индекс 1-й ячейки равен 14 (я думаю, что начальный индекс 1-й ячейки можно получить с помощью start index of table + 4.). В этом случае тело запроса для вставки текста в ячейку выглядит следующим образом.

    {
      "requests": [
        {
          "insertText":
          {
            "location":
            {
              "index": 14
            },
            "text": "Cell content"
          }
        }
      ]
    }
    

Поток 2:

В этом потоке предполагается, что индекс последнего тела известен. Например, когда таблица добавляется в новый документ, вы можете создать таблицу с текстом, используя следующее тело запроса. В этом случае начальный индекс таблицы и ячейки составляют 1 и 5 соответственно.

    {
      "requests": [
        {
          "insertTable":
          {
            "endOfSegmentLocation":
            {
              "segmentId": ""
            },
            "columns": 1,
            "rows": 1
          }
        },
        {
          "insertText":
          {
            "location":
            {
              "index": 5
            },
            "text": "Cell content"
          }
        }
      ]
    }

Ссылки

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

...