Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.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
For loop For循环删除Google Apps脚本中可能存在的多个列_For Loop_Google Apps Script - Fatal编程技术网

For loop For循环删除Google Apps脚本中可能存在的多个列

For loop For循环删除Google Apps脚本中可能存在的多个列,for-loop,google-apps-script,For Loop,Google Apps Script,我有一个谷歌表格,用户可以在其中选择a列中的几个选项之一。在这个列中有7个单元格,用户可以选择一个选项。如果用户选择省略日期,我需要相应的列来删除该日期,并将其转移到不同的工作表中。我有以下代码: //Delete all cells set to 'Omit Day'. var omit_vals = []; var impact_locs = ['A22', 'A23', 'A24','A25', 'A26', 'A27', 'A28']; var hazard_briefing

我有一个谷歌表格,用户可以在其中选择a列中的几个选项之一。在这个列中有7个单元格,用户可以选择一个选项。如果用户选择省略日期,我需要相应的列来删除该日期,并将其转移到不同的工作表中。我有以下代码:

//Delete all cells set to 'Omit Day'.
  var omit_vals = [];
  var impact_locs = ['A22', 'A23', 'A24','A25', 'A26', 'A27', 'A28'];
  var hazard_briefing_placement = ['B13', 'C13', 'D13', 'E13', 'F13', 'G13', 'H13'];
  var hazard_date_briefing_placement = ['B12', 'C12', 'D12', 'E12', 'F12', 'G12', 'H12'];
    for (var zx = 0; zx < 7; zx++){
     var range_omit = String(SpreadsheetApp.getActiveSheet().getRange('main_gen!'+impact_locs[zx]).getValue());
      if (range_omit == 'Omit Day'){
      omit_vals = zx;
        var range_omit_del = body.getRange(hazard_briefing_placement[omit_vals]);
        range_omit_del.deleteCells(SpreadsheetApp.Dimension.COLUMNS);
        var range_omit_del2 = body.getRange(hazard_date_briefing_placement[omit_vals]);
        range_omit_del2.deleteCells(SpreadsheetApp.Dimension.COLUMNS);
        Logger.log(omit_vals);
    }
  }

Omit_vals正确存储我要删除的列的正确值。因此,按照当前编写代码的方式,它第一次循环时会删除正确的列。但是,当它在第二次循环时,现在少了一列,因此当有第二列、第三列或第四列等需要删除时,由于开始时少了一列,所以现在会被关闭一列。我不知道如何解释这一点。你知道我需要纠正什么吗?我很确定它在危险简报放置[omit_vals]行内,但我不确定如何修复此问题。谢谢

脚本的修改点如下所示

发件人: 使用升序删除列时,第一个循环工作。但在第二个循环中,由于删除第一个循环中的列而更改了列号,因此脚本无法正确运行。这就是你的问题所在。 使用降序删除列时,由于列号未更改,因此脚本工作正常。 当然,即使使用升序删除列,也可以在每次循环更新列号时正确使用脚本。但我认为下降循环会变得更简单。
脚本的修改点如下所示

发件人: 使用升序删除列时,第一个循环工作。但在第二个循环中,由于删除第一个循环中的列而更改了列号,因此脚本无法正确运行。这就是你的问题所在。 使用降序删除列时,由于列号未更改,因此脚本工作正常。 当然,即使使用升序删除列,也可以在每次循环更新列号时正确使用脚本。但我认为下降循环会变得更简单。
虽然我不确定我是否能够正确理解您的问题,因为我无法测试它,但是如何修改var zx=0;zx<7;zx++{to表示变量zx=6;zx>=0;zx-{?如果这不是直接的解决方案,我很抱歉。这几乎奏效了。出于某种原因,它一直在删除左端的一个额外列。除了那个小问题,它还会根据需要删除其余列。感谢您的回复。我很抱歉我的评论没有解决您的问题。在当前阶段,我认为需要确认y我们的当前版本。为了测试脚本,您能否提供一个用于复制当前版本的示例电子表格?当然,请删除您的个人信息。通过这一点,我想确认一下。好的,这里有一个版本您可以测试:@Tanaike您的原始解决方案实际上工作得很好。删除额外单元格的原因是因为其他地方有一行代码。我删除了那一行,它的工作原理与它应该的完全一样。谢谢!如果你把它作为一个答案发布,我会接受它。再次感谢。虽然我不确定我是否能够正确理解你的问题,因为我无法测试它,但是修改var zx=0;zx<7;zx++{to for var zx=6;zx>=0;zx如何-{?如果这不是直接的解决方案,我很抱歉。这几乎奏效了。出于某种原因,它一直在删除左端的一个额外列。除了那个小问题,它还会根据需要删除其余列。感谢您的回复。我很抱歉我的评论没有解决您的问题。在当前阶段,我认为需要确认y我们的当前版本。为了测试脚本,您能否提供一个用于复制当前版本的示例电子表格?当然,请删除您的个人信息。通过这一点,我想确认一下。好的,这里有一个版本您可以测试:@Tanaike您的原始解决方案实际上工作得很好。删除额外单元格的原因是因为其他地方有一行代码。我删除了那一行,它完全按照它应该的方式工作。谢谢!如果你把它作为一个答案发布,我将接受它。再次感谢。
for (var zx = 0; zx < 7; zx++){
for (var zx = 6; zx >= 0; zx--){