在这里问我一个问题,我有@utphx提供的这个脚本(非常感谢@utphx)......
function onEdit(e) {
if (Object.prototype.toString.call(e.range.getValue()) !== "[object Date]" ) {
e.range.setValue(e.value.toUpperCase());
}
}
这工作得很好,但我想稍微扩展它以排除一些 unicode 字符,例如......例如......Ⓚ☎,因为它们的字体大小比同一单元格中的字母和数字更大,并且在大写字母之后功能它们以相同的字体大小变化,例如字母和数字,与它们相比它们看起来非常小。我尝试了几种我在这里和网络其他地方找到的方法,但由于我缺乏 Java 编码知识,并且由于这些字符可以与数字和字母在同一个单元格中,要么所有字符都更改为大写字母或者没有。
有没有办法在上面的代码中指定这种类型的字符,以便排除它们变为大写?
编辑:我在@Ruben 的这个答案中找到了以下代码,并添加了@ocordova关于使用getFormula()方法的建议,大写函数可以正常工作,而不会触及包含任何公式和这些类型字符的单元格:☎✈< /p>
function onEdit(e) {
var range = e.range;
var value = range.getValue();
var sheet = range.getSheet();
if (range.getRow() > 1 &&
range.getColumn() > 1 &&
typeof value === 'string') {
if(!range.getFormula()) {
range.setValue(value.toUpperCase());
} else {
if (ind === 0 && e.range.rowStart > 1 && e.range.columnStart >= 1 && e.range.getFormula() == '') {
e.range.setValue(e.value.toUpperCase());
return;
}
}
}
}
我现在唯一需要添加的是检查单元格是否包含以下任何字符:Ⓚ Ⓘ Ⓣ Ⓕ (可能还有更多这种类型的字母或数字),以便将它们从大写函数中排除。有谁知道我该怎么做?我想 REGEX 将是一个解决方案,但我不知道如何以及将它放在上面的代码中。
EDIT2:划掉上面的EDIT。该代码的行为非常奇怪。如果您选择一些单元格来更改边框样式,它会将值从一个单元格复制到所有其他选定的单元格!!!。我将发布一个关于此的新问题。
先感谢您
内苏斯