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
Javascript Google脚本-如果某个单元格不为空,则引用行_Javascript_Google Apps Script_Google Sheets_Triggers_Javascript Objects - Fatal编程技术网

Javascript Google脚本-如果某个单元格不为空,则引用行

Javascript Google脚本-如果某个单元格不为空,则引用行,javascript,google-apps-script,google-sheets,triggers,javascript-objects,Javascript,Google Apps Script,Google Sheets,Triggers,Javascript Objects,我有一个脚本,它根据a:a中的复选框是否被编辑(勾选)来隐藏/显示行。我现在相当定期地添加行,这使得我不得不更改google脚本。下面是这部分代码的一个片段 function onEdit(e) { var cfg = { A6: {startRow: 7, endRow: 20}, A20: {startRow: 21, endRow: 24}, A24: {startRow: 25, endRow: 32}, }; 我希望更改脚本,以便它自动查找A:A中非空

我有一个脚本,它根据a:a中的复选框是否被编辑(勾选)来隐藏/显示行。我现在相当定期地添加行,这使得我不得不更改google脚本。下面是这部分代码的一个片段

function onEdit(e) {
  var cfg = {
    A6: {startRow: 7, endRow: 20},
    A20: {startRow: 21, endRow: 24},
    A24: {startRow: 25, endRow: 32},
  };
我希望更改脚本,以便它自动查找A:A中非空的单元格,并自动分配这些值

例如,在我的电子表格中,它将看到A6、A20和A24不是空的,因此它们将作为第一个值插入。它还将看到,因为A6和A20都不是空的,所以起始行是7,结束行是20等等

这是到目前为止的全部代码-然而,正如所讨论的,只查看了第一部分

function onEdit(e) {
  var cfg = {
    A6: {startRow: 7, endRow: 20},
    A20: {startRow: 21, endRow: 24},
    A24: {startRow: 25, endRow: 32},
  };

  var activeRange = e.range.getA1Notation();
  var ranges = Object.keys(cfg);
  if (cfg[activeRange]) {
    var sheet = e.source.getActiveSheet();
var values = sheet.getRange(ranges[0] + ":" + ranges[ranges.length - 1]).getValues().filter(String);
values.forEach(function(e, i) {
  if (e[0] === true) {
        sheet.showRows(cfg[ranges[i]].startRow, cfg[ranges[i]].endRow - cfg[ranges[i]].startRow);
      } else {
        sheet.hideRows(cfg[ranges[i]].startRow, cfg[ranges[i]].endRow - cfg[ranges[i]].startRow);
      }
    });
  }
}
  • 在您的情况下,列“A”具有除复选框之外的值。这样,当“A6”、“A20”和“A24”的复选框更改时,
    showRows()
    hideRows()
    不起作用
如果我的理解是正确的,这次修改怎么样

发件人: 致:
  • 通过此修改,将检索布尔类型的值
注:
  • 如果布尔类型的值用于除复选框之外的值,请告诉我
如果我误解了你的问题,而这不是你想要的结果,我道歉。当时,为了正确了解您的当前情况,您能否提供一份针对您当前情况的电子表格样本?当然,请删除您的个人信息

补充: 如果布尔类型的值用于除复选框之外的值,那么下面的修改如何

发件人: 致:
我的回答告诉你结果了吗?你能告诉我这件事吗?这对我的学习也很有用。如果这样做有效,其他与你有相同问题的人也可以将你的问题作为可以解决的问题。如果你对我的回答还有疑问,我道歉。那时候,我可以问一下你目前的情况吗?我想通过学习来解决您的问题。谢谢您的回复。
var values = sheet.getRange(ranges[0] + ":" + ranges[ranges.length - 1]).getValues().filter(String);
var values = sheet.getRange(ranges[0] + ":" + ranges[ranges.length - 1]).getValues().filter(function(f) {return typeof f[0] === "boolean"});
var values = sheet.getRange(ranges[0] + ":" + ranges[ranges.length - 1]).getValues().filter(String);
var temp = sheet.getRange(ranges[0] + ":" + ranges[ranges.length - 1]).getValues();
var values = sheet.getRange(ranges[0] + ":" + ranges[ranges.length - 1])
  .getDataValidations()
  .map(function(f, i) {return f[0] && f[0].getCriteriaType() === SpreadsheetApp.DataValidationCriteria.CHECKBOX ? [temp[i][0]] : ""})
  .filter(String);