我欣赏这个团队的集体智慧。
我在网上找到了这些代码片段,并试图将它们应用到我的情况中,绝不打算抄袭任何人…
我想把单元格中的每个单词都大写。我从onEdit(e)函数调用以下脚本。什么也不做。这看起来不太对,显然我遗漏了重要的数据…
function onEdit(e) { TitleCase(e); }
function TitleCase(e) {
return e.toString().split(/b/).map(function (word) {
return e ? e.charAt(0).toUpperCase() + e.slice(1).toLowerCase() : '';
}).join('');
}
我是个新手,非常感谢您的指导。
吉姆
修改点:
-
当您想从OnEdit的简单触发器运行
TitleCase
的脚本时,需要直接将值放入单元格。 -
在脚本中,
e
是事件对象。因此,使用该对象,检索值并将其放入单元格。 -
在你的
TitleCase
的脚本中,我认为它几乎是正确的。但是,我认为return e ? e.charAt(0).toUpperCase() + e.slice(1).toLowerCase() : '';
的e
应该是word
。 -
从您对
How would it be further modified to only perform this for one specific column?
的附加请求来看,在这种情况下,需要检查编辑的列。
当上面的点被反射到脚本中时,它变成如下所示:
修改脚本:
使用此脚本时,请将文本放在单元格中。这样,脚本就运行了。
function onEdit(e) {TitleCase(e);}
function TitleCase(e) {
const columnNumber = 1; // Please set the specific column number. For example, 1 is the column "A".
const range = e.range;
if (range.getColumn() != columnNumber) return;
const value = range.getValue().toString().split(/b/).map(function(word) {
return word ? word.charAt(0).toUpperCase() + word.slice(1).toLowerCase() : '';
}).join('');
range.setValue(value);
}
引用:
- 简单触发
- 事件对象
- setValue(值)