首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用户选择“完成”后,需要冻结单元格值

用户选择“完成”后,需要冻结单元格值
EN

Stack Overflow用户
提问于 2022-06-15 07:48:16
回答 1查看 90关注 0票数 0

我有一个工作表,用户将使用从其结束,有下拉选项“开始,工作,完成”在第C栏要求:一旦用户选择了“完成”,下拉必须被禁用,用户不应该有更多的更改,该单元格。

在这个场景中是否有任何可能的工作。

SS:https://docs.google.com/spreadsheets/d/1tmnDOMyupjeO8d65qHQsxb5KrrKeq7pMYIE8h2VmEJ4/edit?usp=sharing

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-15 08:08:18

我相信你的目标如下。

  • 当用户将"Sheet1“的列"C”的下拉列表更改为“已完成的”时,您不想让用户再次更改它。

在这种情况下,保护细胞怎么样?当这反映在一个示例脚本中时,如下所示。

示例脚本:

在这种情况下,使用可安装的OnEdit触发器。那么,installedOnEdit.

当您使用此脚本时,请将"Sheet1“的"C”列的下拉列表更改为“已完成的”,用户不是电子表格的所有者。这样,细胞就得到了保护。

在电子表格所有者的情况下,所有者可以更改受保护的下拉列表。当所有者将下拉列表从“已完成”更改为另一个值时,保护将被删除。

代码语言:javascript
复制
function installedOnEdit(e) {
  const range = e.range;
  const sheet = range.getSheet();
  if (sheet.getSheetName() != "Sheet1" || range.columnStart != 3) return;
  const p = sheet.getProtections(SpreadsheetApp.ProtectionType.RANGE).find(r => r.getRange().getRow() == range.rowStart);
  if (!p && range.getValue() == "Completed") {
    const p = range.protect();
    p.removeEditors(p.getEditors());
    if (p.canDomainEdit()) p.setDomainEdit(false);
  } else if (p) {
    p.remove();
  }
}

参考文献:

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72627634

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档