Google电子表格如何使用“onedit”更改if语句的单元格?

时间:2017-09-06 18:40:18

标签: if-statement drop-down-menu google-sheets cell google-sheets-api

我是谷歌脚本的新手,希望有人能回答这个问题。

我有7列,每个列都有一个下拉框,因此我们可以选择状态“就绪”,“已批准”,“等待”等。

很快就会有超过500行的状态,所以理想情况下我希望在每列上都有一个函数来自动设置列之后的状态。

示例单元格:

Ready|Waiting|Waiting|Waiting|Waiting|Waiting|Waiting

当第一个任务是Approved时,单元格应如下所示:

Approved|Ready|Waiting|Waiting|Waiting|Waiting|Waiting

在上面的示例中,用户应从下拉列表中单击第一个单元格“已批准”。然后脚本应该读取单元格编辑,并将下一个单元格从“等待”切换到“就绪”

我正在查看脚本路由,因为我需要点击下拉单元格。如果我将一个函数放在单元格本身上,我会丢失下拉选项。

任何帮助都会非常棒!

提前致谢!

1 个答案:

答案 0 :(得分:0)

您可能需要查看此YouTube video,并且可以调整此转录代码以满足您的需求:

function setDataValid_(range, sourceRange) {
  var rule = SpreadsheetApp.newDataValidation().requireValueInRange(sourceRange, true).build();
  range.setDataValidation(rule);
}

function onEdit() {
  var aSheet = SpreadsheetApp.getActiveSheet();
  var aCell = aSheet.getActiveCell();
  var aColumn = aCell.getColumn();

  if (aColumn == 1 && aSheet.getName() == 'Worksheet') {
    var range = aSheet.getRange(aCell.getRow(), aColumn + 1);
    var sourceRange = SpreadsheetApp.getActiveSpreadsheet().getRangeByName(aCell.getValue());
    setDataValid_(range, sourceRange)
  }
}

有关其他见解,您可能还希望看到此thread