在Google Docs API Python中插入表格

时间:2019-05-21 21:17:07

标签: python google-docs-api

来自Working with tables  |  Google Docs API  |  Google Developers

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 :(得分:0)

  • 您要使用Google Docs API在Google文档中插入表格。

如果我的理解是正确的,那么该修改如何?用作请求正文的对象是docs.documents.get方法返回的对象。在此答案中,我想向您展示3个示例。

示例脚本1:

此示例脚本来自the official document

  

下面的示例将文本插入到表格的第一个表格单元格中,并添加表格行。

重要的一点是,在运行脚本之前,请创建新的Google文档并放置表格。然后,请使用脚本来创建文档。这样,Hello的文本将被放在表的“ A1”中,并将一行添加到表中。

脚本:

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列的新表。

脚本:

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. A1B1A2B2的文本放入表格的单元格“ A1:B2”。
    • 从我的实验中获得了以下结果。
      • 对于该行,需要每5个索引设置索引。
      • 对于该列,索引需要每2个索引设置一次。
      • 重要的是,将值放入单元格时,请按“ B2”,“ A2”,“ B1”和“ A1”的顺序排列。因为当第一次输入“ A1”时,其他单元格的索引也会更改。

脚本:

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。如果运行脚本时发生错误,请检查the Quickstart
  • Google Docs API现在正在增长。因此,我认为将来可能会为这种情况添加更简单的方法。

参考:

如果我误解了您的问题,而这不是您想要的结果,我深表歉意。