如何通过Google表格API对行进行分组?

时间:2018-05-08 03:52:45

标签: google-sheets-api

我正在寻找通过Google表格API创建一组行的方法 - 有没有办法做到这一点?我无法找到能够执行此操作的API,但它似乎应该是一种相当常见的格式需求。

通过选择一组行支持此功能,右键单击并弹出选项以创建组,请参阅下面链接的屏幕截图。我只是想通过API寻找一种方法。

enter image description here

3 个答案:

答案 0 :(得分:2)

您可以通过Google Sheets API的第4版完成此操作。

您将需要向该端点提交HTTP POST:

https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}:batchUpdate

您将需要传递有效的JSON请求。我创建了一个简单的电子表格,其中包含一些要分组的行,并使用此JSON作为对14-17行进行分组的测试:

{
  "requests": [
    {
      "addDimensionGroup": {
        "range": {
          "dimension": "ROWS",
          "sheetId": 0,
          "startIndex": 14,
          "endIndex": 17
        }
      }
    }
  ]
}

请注意,startIndex是行(或列)号,即使您折叠了该组,所有内容都将折叠到该行(或列)中,而endIndex是该组的最后一个元素,当该组折叠时,该元素将保持隐藏状态。

此文档为here。如果您的窗口足够宽,它将在右侧显示“尝试此API”窗格。您可以输入工作表的电子表格ID并构建JSON请求主体并对其进行测试,以查看其可直接在工作表上运行-如果在另一个窗口中打开它,则应在单击“执行”后立即看到更新发生按钮。

答案 1 :(得分:1)

使用此-> Range.shiftColumnGroupDepth

var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];
var range = sheet.getActiveRange();

// The column grouping depth is increased by 1.
range.shiftColumnGroupDepth(1);

// The column grouping depth is decreased by 1.
range.shiftColumnGroupDepth(-1);

答案 2 :(得分:0)

创建列和行组

列组

function createSomeColumGroups() {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName("Sheet189");//this is used in the request
  var resource='{"requests": [';
  for(var i=1;i<25;i+=3) {//start at column 1 and ends at 24 making them in groups of 3
    if(i>1){resource+=', ';}
    resource+=Utilities.formatString('{"addDimensionGroup": {"range": {"dimension": "COLUMNS","sheetId": %s,"startIndex": %s ,"endIndex": %s}}}',sh.getSheetId(),i,i+2);
  }
  resource+=']}';
  Logger.log(resource);
  Sheets.Spreadsheets.batchUpdate(resource, ss.getId());
}

行组

function createSomeRowGroups() {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName("Sheet189");
  var resource='{"requests": [';
  for(var i=1;i<25;i+=3) {
    if(i>1){resource+=', ';}
    resource+=Utilities.formatString('{"addDimensionGroup": {"range": {"dimension": "ROWS","sheetId": %s,"startIndex": %s ,"endIndex": %s}}}',sh.getSheetId(),i,i+2);
  }
  resource+=']}';
  Logger.log(resource);
  Sheets.Spreadsheets.batchUpdate(resource, ss.getId());
}

别忘了使用高级Google服务并启用Sheets API版本4,并且您还必须在Google Cloud Platform上启用