首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Google工作表中多选择下拉列表的数据验证

Google工作表中多选择下拉列表的数据验证
EN

Stack Overflow用户
提问于 2021-01-23 23:50:54
回答 2查看 4.8K关注 0票数 0

我几乎没有使用谷歌脚本的经验,但是我需要创建一个使用数据验证来限制通过“多选择”下拉列表在特定列中输入的内容的谷歌表。Google有一个内置的数据验证功能,允许从下拉列表中选择一个“单一”选项,但是我需要我的Google工作表允许从限制选项列表中为一个单元格选择多个选项。

浏览完互联网后,我找到了一个用于工作的Google (链接这里 ),但是当我将这个脚本应用到我的电子表格中时,我会得到以下错误消息。

TypeError:无法读取未定义的onEdit @ Code.gs:7的属性值

下面是我一直在使用的脚本。

代码语言:javascript
运行
复制
function onEdit(e) {
var oldValue;
var newValue;
var ss=SpreadsheetApp.getActiveSpreadsheet();
var activeCell = ss.getActiveCell();
if(activeCell.getColumn() == 7  && ss.getActiveSheet().getName()=="Daniel") {
newValue=e.value;
oldValue=e.oldValue;
if(!e.value) {
activeCell.setValue("");
}
else {
if (!e.oldValue) {
activeCell.setValue(newValue);
}
else {
if(oldValue.indexOf(newValue) <0) {
activeCell.setValue(oldValue+'|'+newValue);
}
else {
activeCell.setValue(oldValue);
}
}
}
}
}

我很想听听关于剧本可能出现的问题的想法。

EN

回答 2

Stack Overflow用户

发布于 2021-01-24 00:13:58

这样试一试:

代码语言:javascript
运行
复制
function onEdit(e) {
  const sh = e.range.getSheet();
  if (e.range.columnStart == 7 && sh.getName() == "Daniel") {
    if (!e.value) {
      e.range.setValue("");
    }
    else {
      if (!e.oldValue) {
        e.range.setValue(e.value);
      }
      else {
        if (e.oldValue.indexOf(e.value) < 0) {
          e.range.setValue(e.oldValue + '|' + e.value);
        }
        else {
          e.range.setValue(e.oldValue);
        }
      }
    }
  }
}

记住,不能只从菜单或脚本编辑器运行这样的函数。如果您没有执行任何需要权限的操作,那么可以使用一个简单的触发器来运行它。如果您正在执行需要权限的操作,则必须选择onEdit以外的名称并使用可安装触发器。

试着把这个放在一个空白的Sheet1上,然后设置第7列,这样就有了一个下拉列表。在更改第7列时,您将能够在单元格A1中看到事件对象中的值。您还将看到该函数何时工作,因为它在工作表中显示了祝酒词。

代码语言:javascript
运行
复制
function onEdit(e) {
  e.source.toast('entry');
  const sh = e.range.getSheet();
  sh.getRange(1,1).setValue(JSON.stringify(e));
  if (e.range.columnStart == 7 && sh.getName() == "Sheet1") {
    if (!e.value) {
      e.range.setValue("");
    }
    else {
      if (!e.oldValue) {
        e.range.setValue(e.value);
      }
      else {
        if (e.oldValue.indexOf(e.value) < 0) {
          e.range.setValue(e.oldValue + '|' + e.value);
        }
        else {
          e.range.setValue(e.oldValue);
        }
      }
    }
  }
}

这是它现在正在做什么的一个小动画。

票数 1
EN

Stack Overflow用户

发布于 2022-06-27 14:05:53

一个简单的,但承认是不光彩的方法,以避免缺乏多重选择能力,是插入一个笔记为单元格,并把你的内容。之后,您可以从便笺中剪切要使用的内容,并将其粘贴到单元格中。编辑内容也更容易,因为它不需要语法(例如,确保选项之间有逗号)

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

https://stackoverflow.com/questions/65865765

复制
相关文章

相似问题

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