我几乎没有使用谷歌脚本的经验,但是我需要创建一个使用数据验证来限制通过“多选择”下拉列表在特定列中输入的内容的谷歌表。Google有一个内置的数据验证功能,允许从下拉列表中选择一个“单一”选项,但是我需要我的Google工作表允许从限制选项列表中为一个单元格选择多个选项。
浏览完互联网后,我找到了一个用于工作的Google (链接这里 ),但是当我将这个脚本应用到我的电子表格中时,我会得到以下错误消息。
TypeError:无法读取未定义的onEdit @ Code.gs:7的属性值
下面是我一直在使用的脚本。
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);
}
}
}
}
}
我很想听听关于剧本可能出现的问题的想法。
发布于 2021-01-24 00:13:58
这样试一试:
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中看到事件对象中的值。您还将看到该函数何时工作,因为它在工作表中显示了祝酒词。
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);
}
}
}
}
}
这是它现在正在做什么的一个小动画。
发布于 2022-06-27 14:05:53
一个简单的,但承认是不光彩的方法,以避免缺乏多重选择能力,是插入一个笔记为单元格,并把你的内容。之后,您可以从便笺中剪切要使用的内容,并将其粘贴到单元格中。编辑内容也更容易,因为它不需要语法(例如,确保选项之间有逗号)
https://stackoverflow.com/questions/65865765
复制相似问题