Javascript Google脚本-如果某个单元格不为空,则引用行
我有一个脚本,它根据a:a中的复选框是否被编辑(勾选)来隐藏/显示行。我现在相当定期地添加行,这使得我不得不更改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中非空
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);