Google Docs API中的表格边框

时间:2019-12-05 10:01:23

标签: border google-docs-api

我正在寻找一种使用API​​获取Google文档边框宽度的方法吗?

我已经设置了一个包含两个1单元格表的测试文档。 第一个带有默认边框,第二个带有0宽度边框,第三个带有3 pt边框。

https://docs.google.com/document/d/1KOiw6bmsNhdOGGr9OZDWHNHrEID5RZncyCRRFFSU_Ok/edit

我使用get request

检索文档

在边框宽度方面,我找不到这三个表之间的任何区别。

根据documentation TableCellStyle,应该具有borderTop / Bottom / Left / Right值,但是我不确定将它们包含在响应中需要做什么。

所有3个tableCellStyle看起来都一样,

              "tableCellStyle": {
                "rowSpan": 1,
                "columnSpan": 1,
                "backgroundColor": {},
                "paddingLeft": {
                  "magnitude": 5,
                  "unit": "PT"
                },
                "paddingRight": {
                  "magnitude": 5,
                  "unit": "PT"
                },
                "paddingTop": {
                  "magnitude": 5,
                  "unit": "PT"
                },
                "paddingBottom": {
                  "magnitude": 5,
                  "unit": "PT"
                },
                "contentAlignment": "TOP"
              }

每个表格单元格都包含一个具有相同段落样式的段落:

                      "borderLeft": {
                        "color": {},
                        "width": {
                          "unit": "PT"
                        },
                        "padding": {
                          "unit": "PT"
                        },
                        "dashStyle": "SOLID"
                      },

更新

我在上面的示例中设置了表格边框,该边框未在API响应中表示。 我的假设是表格边框反映在响应数据的单元格中,因为表格边框本身没有属性。部分正确,请参见答案。

2 个答案:

答案 0 :(得分:1)

来自TableCellStyle documentation

  

继承的表格单元格样式在此消息中表示为未设置的字段。表格单元格样式可以从表格样式继承。

在这种情况下,TableCellStyle继承具有默认样式的默认borderLeft,borderRight,borderTop和borderBottom,其表示形式如下:

"borderTop": {
  "color": {
    "color": {
      "rgbColor": {}
    }
  },
  "width": {
    "magnitude": 1,
    "unit": "PT"
  },
  "dashStyle": "SOLID"
}

基本上,如果您要获取边框宽度,则必须首先检查数据中是否存在该边框字段。如果不是,则将其设置为默认值(1 PT)。例如,结合使用JavaScript及其ternary operator

var borderTopMagnitude = tableCellStyle.borderTop ? tableCellStyle.borderTop.width.magnitude : 1;
var borderBottomMagnitude = tableCellStyle.borderBottom ? tableCellStyle.borderBottom.width.magnitude : 1;
var borderLeftMagnitude = tableCellStyle.borderLeft ? tableCellStyle.borderLeft.width.magnitude : 1;
var borderRightMagnitude = tableCellStyle.borderRight ? tableCellStyle.borderRight.width.magnitude : 1;

答案 1 :(得分:0)

从新表开始,以下顺序适用。

  1. 更改表格边框样式不会反映在API响应中。

  2. 单个单元格或所有单元格的变化将反映在API响应中。

  3. 执行完第2步后,表格边框样式的更改现在将反映在API响应中,但仅适用于先前已单独修改的单元格。