You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Google Sheets中根据单元格值自动设置数据验证下拉为Done

解决方法:保留下拉选项的同时自动填充指定值

要实现在E26为FALSE时自动将E10:E14设为Done,同时保留原有的数据验证下拉选项,推荐使用Google Apps脚本来实现(公式无法同时满足“自动填充值”和“保留下拉选项”的需求),具体操作如下:

1. 打开脚本编辑器

  • 打开目标表格,点击顶部菜单栏的「扩展程序」→「Apps脚本」,进入脚本编辑界面。

2. 编写触发脚本

  • 删除编辑器中的默认代码,粘贴以下脚本:
function onEdit(e) {
  const sheet = e.source.getActiveSheet();
  // 仅在E26被修改时执行逻辑
  if (e.range.getA1Notation() === 'E26') {
    const targetRange = sheet.getRange('E10:E14');
    // 当E26的值为FALSE时,批量设置为Done
    if (e.value === 'FALSE') {
      targetRange.setValue('Done');
    }
  }
}

3. 保存并授权

  • 点击编辑器顶部的保存按钮,为脚本命名(例如「AutoSetWorkflowStatus」)。
  • 首次运行会触发授权提示,按照页面指引完成授权(需允许脚本访问你的表格数据)。

原理说明

  • 脚本通过onEdit触发器监听表格编辑操作,仅在E26单元格被修改时触发逻辑。
  • 脚本仅修改E10:E14的单元格值,不会改动原有的数据验证规则,因此这些单元格依然保留「Done/In progress/Not started」的下拉选项,用户后续可手动修改状态。

可选扩展逻辑

如果需要在E26改为TRUE时恢复默认状态,可修改脚本添加以下逻辑:

function onEdit(e) {
  const sheet = e.source.getActiveSheet();
  if (e.range.getA1Notation() === 'E26') {
    const targetRange = sheet.getRange('E10:E14');
    if (e.value === 'FALSE') {
      targetRange.setValue('Done');
    } else if (e.value === 'TRUE') {
      // 可替换为你需要的默认值,比如'Not started'
      targetRange.setValue('Not started');
    }
  }
}

内容的提问来源于stack exchange,提问作者Arrk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 01:52:40