自动填充单元格,同时保留数据验证下拉菜单?

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

我有一个 Google 表格,用于跟踪进入我们团队的各种请求,其中一列是经过数据验证的下拉列表列,显示请求是否为“待分配”、“正在进行”、“已完成”等。

请求通过 Google 表单传入,此 Google 表格直接从该表单导入。我想做的是,每次收到新请求时,状态列都会自动验证为“待分配”,然后团队之一可以在分配后手动覆盖它。通过使用 ISBLANK,一旦相应的请求进来,我就能够让该列填充“待分配”,但问题是这会覆盖我预设的数据验证。

有什么方法可以配置工作表,以便当 X 列填充新请求时,我的状态列可以填充“等待分配”,但保留数据验证下拉列表?

TLDR:每当填充 A 列时,我希望同一行上的 D 列自动更改为“待分配”,同时保留数据验证下拉列表。有人可以帮忙吗?

示例电子表格

validation google-sheets google-sheets-formula
1个回答
0
投票

这是一个示例 Apps 脚本,它将执行您指定的操作。

function onEdit(e) {
  // Get the sheetname of the sheet being edited
  var activeSheet = e.source.getActiveSheet();
  var activeSheetName = activeSheet.getName();

  // We only want to edit 'Build Sample Here' sheet
  if (activeSheetName !== 'Build Sample Here') return;

  // Get preset validation
  var validationCell = activeSheet.getRange('D2');
  var validation = validationCell.getDataValidation();

  if (validation == null) return;

  // Get validation choices
  var choices = validation.getCriteriaValues(); // Array[][]
  var pendingAllocation = choices[0][0]

  // Check that e.range is column A and value is empty
  if (e.range.getColumn() != 1.0 || e.oldValue != null) return;

  // Otherwise, set Status on row to 'Pending Allocation'
  const row = e.range.getRow();
  const dropdown = activeSheet.getRange(row, 4);
  dropdown.setValue(pendingAllocation);
}
© www.soinside.com 2019 - 2024. All rights reserved.