问题描述
我需要一个脚本,该脚本仅在更改“ Daily #s WK1”工作表中的单元格c2时才能运行,这是我打开并关闭单元格的代码。
function onChange() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Daily #s WK1");
var currentRange = ss.getRangeByName("NamedRange1");
var rangeStart = currentRange.getRow();
var values = currentRange.getValues();
var index = 0,rows = 1;
var show = !(values[0][40] == "" );
for (var i = 1,length = values.length; i < length; i++) {
if (values[i][0] == 1 ) {
if (show) {
sheet.showRows(rangeStart + index,rows);
show = false;
index = i;
rows = 1;
} else
rows++;
} else {
if (show)
rows++;
else {
sheet.hideRows(rangeStart + index,rows);
show = true;
index = i;
rows = 1;
}
解决方法
答案
您必须利用函数处理的事件来检查当前已编辑的单元格。按照Apps Script Documentation所说:
当用户更改电子表格中任何单元格的值时,onEdit(e)触发器将自动运行。大多数onEdit(e)触发器使用事件对象中的信息进行适当的响应。
我建议您使用以下代码。
记住:
代码
function onEdit(e) {
if (e.range.getA1Notation() === "C2" && e.source.getActiveSheet().getName() === "Daily #s WK1") {
// Your code
}
}