如何识别单元格与Google Sheets API合并的单元格

时间:2019-04-03 04:38:02

标签: go google-sheets-api

我正在使用Go API https://developers.google.com/sheets/api/quickstart/go

我有一个看起来像这样的工作表,并且想自动化一些单元格填充逻辑

  |  B   |  C   |
--+------+------+
1 |  b1  |  c1  |
--+------+      |
2 |  b2  |      |
--+------+------+
3 |  b3  |      |
--+------+------+

使用readRange := "B1:C"

resp, _ := s.srv.Spreadsheets.Values.Get(spreadsheetId, readRange).Do()
for _, row := range resp.Values {
   ...
}

我无法分辨C2和C3之间的区别。在这种情况下,我想向C3而非C2填充一些值。如何通过API进行检查?

1 个答案:

答案 0 :(得分:1)

  • 您要使用Sheets API检索工作表中合并单元格的信息。

从您的答复中,我可以像上面那样理解。如果我的理解是正确的,则sheets.values.get的方法无法检索合并单元格的信息。在这种情况下,请使用sheets.get的方法。修改后的脚本如下。

修改后的脚本:

ranges := []string{"B1:C"}
resp, _ := s.srv.Spreadsheets.Get(spreadsheetId).Ranges(ranges...).Do()
for _, sheet := range resp.Sheets {
    for _, merge := range sheet.Merges {
        fmt.Printf("%#v\n", merge)
    }
}

注意:

  • 此修改后的脚本假定您已经使用了Sheets API。
  • B1:C的范围表示第一个标签的B1:C
  • 在脚本上方运行时,可以像下面的GridRange一样检索合并单元格的坐标。

    {
      "sheetId": 0,
      "startRowIndex": 0,
      "endRowIndex": 2,
      "startColumnIndex": 2,
      "endColumnIndex": 3
    }
    
    • 此GridRange是工作表ID C1:C2的{​​{1}}作为a1Notation。
      • 从以上结果中,发现0是合并的单元格。
      • 在这种情况下,将值放在C1:C2中时,将显示该值。但是,将值放在C1中时,不会显示该值。请注意这一点。
    • 如果要使用GridRange放置值,则可以使用电子表格的方法。batchUpdate。

参考文献: