Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json 在Google工作表中折叠所有具有一定深度的组_Json_Google Apps Script_Google Sheets - Fatal编程技术网

Json 在Google工作表中折叠所有具有一定深度的组

Json 在Google工作表中折叠所有具有一定深度的组,json,google-apps-script,google-sheets,Json,Google Apps Script,Google Sheets,我正在尝试创建一个允许查看多个层次细节的谷歌表单。 其思想是使用“宏”功能使用快捷方式,为每个细节级别运行一个宏。每个详细级别显示具有特定深度组的活动图纸。 i、 e.当我为最顶层视图运行宏时,所有行组都将折叠: function _1stLevelofDetail() { var spreadsheet = SpreadsheetApp.getActive(); spreadsheet.getActiveSheet().collapseAllRowGroups(); }; 当我为最

我正在尝试创建一个允许查看多个层次细节的谷歌表单。 其思想是使用“宏”功能使用快捷方式,为每个细节级别运行一个宏。每个详细级别显示具有特定深度组的活动图纸。 i、 e.当我为最顶层视图运行宏时,所有行组都将折叠:

function _1stLevelofDetail() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getActiveSheet().collapseAllRowGroups();
}; 
当我为最详细的视图(在我的例子中是第四个)运行宏时,所有行组都会展开:

function _4thLevelofDetail() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getActiveSheet().expandAllRowGroups();
};
如何更改以下代码,使其足够健壮,以便在不中断代码的情况下更新/添加/删除行列

function _3rdLevelofDetail() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getActiveSheet().expandAllRowGroups();
  spreadsheet.getActiveSheet().getRowGroup(8, 3).collapse();
  spreadsheet.getActiveSheet().getRowGroup(11, 3).collapse();
  spreadsheet.getActiveSheet().getRowGroup(14, 3).collapse();
  spreadsheet.getActiveSheet().getRowGroup(18, 3).collapse();
  spreadsheet.getActiveSheet().getRowGroup(23, 3).collapse();
};
我的想法是获取深度为3的所有行组,但我不知道如何将其转化为代码。

代码的问题是,电子表格操作有时会捆绑在一起以提高性能 这意味着,例如,
spreadsheet.getActiveSheet().getRowGroup(8,3).collapse()
电子表格.getActiveSheet().expandAllRowGroups()一起调用在前者完成执行之前

这个问题可以通过在每个请求之后实现来解决,当在执行下一行代码之前完成请求非常关键时,这可能会有点耗时

所以,例如

 spreadsheet.getActiveSheet().expandAllRowGroups();
 SpreadsheetApp.flush();
 spreadsheet.getActiveSheet().getRowGroup(8, 3).collapse();
更新:
  • 如果要动态折叠特定深度的所有行组,则需要首先检索它们

  • 为此,您需要使用,它允许您使用应用程序中脚本的方法

  • 启用“高级图纸”服务后,可以按以下方式折叠具有所需深度的所有组:
函数_3rdLevelofDetail(){
var电子表格=SpreadsheetApp.getActive();
电子表格.getActiveSheet().expandAllRowGroups();
var Id=spreadsheet.getId();
变量组=Sheets.Spreadsheets.get(Id{
范围:电子表格.getActiveSheet().getSheetName(),
字段:“工作表/行组”
});
var rowGroups=groups.sheets[0]。rowGroups;
对于(var i=0;i
代码的问题在于,电子表格操作有时会捆绑在一起以提高性能 这意味着,例如,
spreadsheet.getActiveSheet().getRowGroup(8,3).collapse()
电子表格.getActiveSheet().expandAllRowGroups()一起调用在前者完成执行之前

这个问题可以通过在每个请求之后实现来解决,当在执行下一行代码之前完成请求非常关键时,这可能会有点耗时

所以,例如

 spreadsheet.getActiveSheet().expandAllRowGroups();
 SpreadsheetApp.flush();
 spreadsheet.getActiveSheet().getRowGroup(8, 3).collapse();
更新:
  • 如果要动态折叠特定深度的所有行组,则需要首先检索它们

  • 为此,您需要使用,它允许您使用应用程序中脚本的方法

  • 启用“高级图纸”服务后,可以按以下方式折叠具有所需深度的所有组:
函数_3rdLevelofDetail(){
var电子表格=SpreadsheetApp.getActive();
电子表格.getActiveSheet().expandAllRowGroups();
var Id=spreadsheet.getId();
变量组=Sheets.Spreadsheets.get(Id{
范围:电子表格.getActiveSheet().getSheetName(),
字段:“工作表/行组”
});
var rowGroups=groups.sheets[0]。rowGroups;
对于(var i=0;i
明白了。不过,最初的问题仍然存在。例如,如何折叠组深度为3的所有行组<代码>电子表格.getActiveSheet().getRowGroup([],3).collapse()首先需要使用Sheets API检索这些行组,请参见我的更新答案。必须更改代码的一部分,然后才能执行此操作
var index=rowGroups[i]。range.startIndex+1电子表格.getActiveSheet().getRowGroup([],3).collapse()首先需要使用Sheets API检索这些行组,请参见我的更新答案。必须更改代码的一部分,然后才能执行此操作
var index=rowGroups[i]。range.startIndex+1