在 python 中使用 google 文档 api 创建 table 的通用方法

Generic way to create table using google docs api in python

很抱歉,我问了太多 Google 文档相关的问题,但我正在努力使我的文档创建更通用,而且看起来非常复杂 在这里,我尝试使用 google 文档 API 创建动态 table 但有些问题我无法解决。

def create_table(row, column, table_index):
    table_body = {
        "insertTable":
            {
                "rows": row,
                "columns": column,
                "location":
                    {
                        "index": table_index
                    }
            }
    }
    return table_body


def insert_table_data(row, column, text):
    table_data = []
    index = 0
    for i in range(row):
        inp_text = text[i]
        for j in range(column):
            index += 5
            insert_value = {
                "insertText":
                    {
                        "text": inp_text[j],
                        "location":
                            {
                                "index": index
                            }
                    }

            }
            table_data.append(insert_value)
        index = 0
    print(table_data)
    return table_data

request = []
file_id = ######
requests.append(create_table(2, 2, 1))
text = [['Name', 'XYZ'], ['Industry', 'Software']]
requests.append(insert_table_data(2, 2, text))
docs.documents().batchUpdate(documentId=file_id, body={'requests': requests}).execute()

在这里,我尝试创建 2*2 table 并插入 text 数据。对于单元格索引,我采用了以下方法(我从 Tanaike 的回答中获取)

我无法在行更改时更改索引。我正在为 table 内容获取以下有效负载。

[
   {
      "insertText":{
         "text":"Name",
         "location":{
            "index":5
         }
      }
   },
   {
      "insertText":{
         "text":"XYZ",
         "location":{
            "index":10
         }
      }
   },
   {
      "insertText":{
         "text":"Industry",
         "location":{
            "index":5
         }
      }
   },
   {
      "insertText":{
         "text":"Software",
         "location":{
            "index":10
         }
      }
   }
]

预期输出:

Tanaike's tutorial

所述

For the row, the index is required to set every 5 index. For the column, the index is required to set every 2 index.

注:

  • 您需要按降序插入文本请求(首先是最后一行和最后一列,然后是最后一行和第一列,依此类推...)。应该这样安排,这样您的索引就不会随着您在 table.
  • 中添加文本而调整

示例代码:

def insert_table_data(row, column, text):
    table_data = []
    index = 0
    for i in reversed(range(row)):
        inp_text = text[i]
        rowIndex = (i+1)*5
        for j in reversed(range(column)):
            index = rowIndex + (j*2)
            insert_value = {
                "insertText":
                    {
                        "text": inp_text[j],
                        "location":
                            {
                                "index": index
                            }
                    }

            }
            table_data.append(insert_value)

    print(table_data)
    return table_data

它有什么作用?

  • 反转行索引的循环。行索引应能被 5 整除(在行索引中添加 1 个偏移量,因为数组是零索引的)
  • 反向循环列索引(根据您的列数,应在行索引中添加 +2 偏移量)

样品请求:

{
   "insertText":{
      "text":"Software",
      "location":{
         "index":12
      }
   }
},
{
   "insertText":{
      "text":"Industry",
      "location":{
         "index":10
      }
   }
},
{
   "insertText":{
      "text":"XYZ",
      "location":{
         "index":7
      }
   }
},
{
   "insertText":{
      "text":"Name",
      "location":{
         "index":5
      }
   }
}

示例输出