Google apps script 在Google工作表中创建分组

Google apps script 在Google工作表中创建分组,google-apps-script,google-sheets,grouping,Google Apps Script,Google Sheets,Grouping,我想通过API(appscript)在Google工作表中实现组,因为direct方法不能动态工作。我有一个名为levels(0-8)的列,然后还有两个列(其他信息)。我想写一个脚本来组成小组。它将检查具有级别的第一列,如果下一行的级别高于当前i级别,它将生成一组这些行,直到出现具有相同级别或低于i级别的行。例如,级别为:1,2,3,4,1,0,3,4。在这种情况下,它将从1开始,并将2,3,4作为一组,因为它们大于1。跳过1,0,因为它们等于或小于1,0,然后组成一组3,4。然后,它将运行2次

我想通过API(appscript)在Google工作表中实现组,因为direct方法不能动态工作。我有一个名为levels(0-8)的列,然后还有两个列(其他信息)。我想写一个脚本来组成小组。它将检查具有级别的第一列,如果下一行的级别高于当前i级别,它将生成一组这些行,直到出现具有相同级别或低于i级别的行。例如,级别为:1,2,3,4,1,0,3,4。在这种情况下,它将从1开始,并将2,3,4作为一组,因为它们大于1。跳过1,0,因为它们等于或小于1,0,然后组成一组3,4。然后,它将运行2次,并执行相同的操作,为3,4创建一个组,跳过1,0,然后为3,4创建一个组

以下是链接:

代码如下:

function myFunction() {
    const rootSheet = SpreadsheetApp.getActive().getActiveSheet();
    var r = rootSheet.getLastRow();
    for (var i = 3; i <= r; i++) {
        var t = 0;
        do {
            rootSheet.getRange(i,6).shiftRowGroupDepth(1);
            t = t + 1;
        } while (SpreadsheetApp.getActiveSheet().getRange(i,1).getValue() == t)

          }
          
          }
函数myFunction(){
const rootSheet=SpreadsheetApp.getActive().getActiveSheet();
var r=rootSheet.getLastRow();
对于(var i=3;i修改点:
  • 在脚本中,“Sheet1”中“A”列的值似乎不用于组深度
  • 在这种情况下,我想提出以下流程。
  • 从列“A”中检索值
  • 使用检索到的值设置组深度
修改脚本: 结果: 将上述脚本用于共享电子表格时,将获得以下结果

参考:
修改点:
  • 在脚本中,“Sheet1”中“A”列的值似乎不用于组深度
  • 在这种情况下,我想提出以下流程。
  • 从列“A”中检索值
  • 使用检索到的值设置组深度
修改脚本: 结果: 将上述脚本用于共享电子表格时,将获得以下结果

参考:
function myFunction() {
  const sheetName = "Sheet1";
  
  // 1. Retrieve values from the column "A".
  const rootSheet = SpreadsheetApp.getActive().getSheetByName(sheetName);
  const levels = rootSheet.getRange("A2:A" + rootSheet.getLastRow()).getValues();
  
  // 2. Set the group depth using the retrieved values.
  levels.forEach(([a], i) => rootSheet.getRange(i + 2, 1).shiftRowGroupDepth(a));
}