【问题标题】:How can I Group Rows via the Google Sheets API?如何通过 Google Sheets API 对行进行分组?
【发布时间】:2018-05-08 03:52:45
【问题描述】:

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

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

【问题讨论】:

标签: google-sheets-api


【解决方案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】:

    您可以通过 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 请求正文并对其进行测试以直接在工作表上工作 - 如果您在另一个窗口中打开它,您应该会在单击“执行”后立即看到更新按钮。

    【讨论】:

      【解决方案3】:

      创建列组和行组

      列组

      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 上启用

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-07-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-04
        • 2020-10-21
        相关资源
        最近更新 更多