Вставить таблицу в Google Docs API Python - PullRequest
2 голосов
/ 22 мая 2019

С Работа с таблицами |API Документов Google |Разработчики Google

requests = [{'insertTable': {"table": {
"columns": 2,
"rows": 2,
"tableRows": [
    { "tableCells": [
            {
                "content": [ { "paragraph": { ...  }, } ],
            },
            {
                "content": [ { "paragraph": { ... }, } ],
            }
        ],
    },
    {
        "tableCells": [
            {
                "content": [ { "paragraph": { ... }, } ],
            },
            {
                "content": [ { "paragraph": { ... }, } ],
            }
        ],
    }
]}}}]
result = service.documents().batchUpdate(documentId=DOCUMENT_ID, body={'requests': requests}).execute()

Я получаю TypeError: Object of type set is not JSON serializable

1 Ответ

0 голосов
/ 22 мая 2019
  • Вы хотите вставить таблицу в Документ Google, используя Google Docs API.

Если мое понимание верно, как насчет этой модификации?Объект, используемый в качестве тела запроса, является возвращенным объектом из метода docs.documents.get.В этом ответе я хотел бы показать вам 3 образца.

Пример сценария 1:

Этот пример сценария взят из официального документа .

В следующем примере текст вставляется в первую ячейку таблицы и добавляется строка таблицы.

В качестве важного момента перед запуском сценария создайте новый документ Google и добавьтеТаблица.Затем, пожалуйста, используйте скрипт для созданного документа.Таким образом, текст Hello помещается в «A1» таблицы и в таблицу добавляется одна строка.

Script:

requests = [{
      'insertText': {
        'location': {
          'index': 5
        },
        'text': 'Hello'
    }
  },
  {
    'insertTableRow': {
        'tableCellLocation': {
            'tableStartLocation': {
                    'index': 2
            },
            'rowIndex': 1,
            'columnIndex': 1
        },
        'insertBelow': 'true'
    }
  }
]

result = service.documents().batchUpdate(documentId=DOCUMENT_ID, body={'requests': requests}).execute()

Пример сценария 2:

В этом примере сценария создается новая таблица с 2 строками и 2 столбцами.

Script:

requests = [
    {
        "insertTable":
        {
            "rows": 2,
            "columns": 2,
            "location":
            {
                "index": 1
            }
        }
    }
]

result = service.documents().batchUpdate(documentId=DOCUMENT_ID, body={'requests': requests}).execute()

Пример сценария 3:

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

Ниже приведен пример выполнения этого примера сценария.

  1. Создание таблицыс 2 строками и 2 столбцами.
  2. Поместите текст A1, B1, A2 и B2 в ячейки "A1: B2" таблицы.
    • Из моего эксперимента были получены следующие результаты.
      • Для строки требуется, чтобы индекс устанавливался через каждые 5 индексов.
      • Для столбца индекс должен устанавливаться через каждые 2 индекса.
      • Как важный моментКогда значения помещаются в ячейки, пожалуйста, расположите их в порядке «B2», «A2», «B1» и «A1».Потому что, когда «А1» вводится первым, индексы для других ячеек меняются.

Сценарий:

requests = [
    {
        "insertTable":
        {
            "rows": 2,
            "columns": 2,
            "location":
            {
                "index": 1
            }
        }
    },
    {
        "insertText":
        {
            "text": "B2",
            "location":
            {
                "index": 12
            }
        }
    },
    {
        "insertText":
        {
            "text": "A2",
            "location":
            {
                "index": 10
            }
        }
    },
    {
        "insertText":
        {
            "text": "B1",
            "location":
            {
                "index": 7
            }
        }
    },
    {
        "insertText":
        {
            "text": "A1",
            "location":
            {
                "index": 5
            }
        }
    }
]

result = service.documents().batchUpdate(documentId=DOCUMENT_ID, body={'requests': requests}).execute()

Примечание:

  • В этих примерах сценариев используется область действия https://www.googleapis.com/auth/documents.Пожалуйста, будьте осторожны.
  • В этих примерах сценариев предполагается, что вы уже использовали Google Docs API.Если ошибка возникла при запуске сценария, проверьте, Быстрый старт .
  • API Документов Google растет.Поэтому я думаю, что в будущем может быть добавлен более простой метод для этой ситуации.

Ссылки:

Если я неправильно понял ваш вопрос, и это был не тот результат, который вам нужен, яизвиняться.

...