onEdit() 排除标题行

问题描述 投票:0回答:1

我一直在阅读有关如何从我的

onEdit()
中排除标题行的各种帖子。我已经阅读过
offset()
的示例,甚至在其他函数中使用
shift()
。这个特定的功能是当一行中的范围具有值时生成一个复选框。

我分别尝试了以下方法:

checkboxCell.offset(1,0)

checkboxCell.shift()

这些最终会失败,并显示消息说它们不是函数。

有人可以指导我如何做到这一点吗?

function onEdit(e) {
  let sheet = e.source.getActiveSheet();
  const checkboxCell = sheet.getRange(e.range.rowStart, 1);
  let editedRow = sheet.getRange(e.range.rowStart, 2, 1, 3).getValues().flat();
  editedRow = editedRow.filter(x => x != '');
  if (editedRow.length == 3) {
    checkboxCell.insertCheckboxes();
  } else {
    checkboxCell.clearDataValidations();
    checkboxCell.clearContent();
  }
}
google-apps-script checkbox offset
1个回答
0
投票

解决方案:

添加另一个条件语句以限制在

e.range.rowStart
设置为 1(即第一行)时添加复选框

完整代码:

function onEdit(e) {

  let sheet = e.source.getActiveSheet();
  const checkboxCell = sheet.getRange(e.range.rowStart, 1);
  let editedRow = sheet.getRange(e.range.rowStart, 2, 1, 3).getValues().flat();
  editedRow = editedRow.filter(x => x != '');
  
  if (editedRow.length == 3 && e.range.rowStart != 1) {
    checkboxCell.insertCheckboxes();
  } else {
    checkboxCell.clearDataValidations();
    checkboxCell.clearContent();
  }

}

修改:

(editedRow.length == 3)
(editedRow.length == 3 && e.range.rowStart != 1)

© www.soinside.com 2019 - 2024. All rights reserved.