首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据某些条件,自动在Google电子表格中使所有插入的文本大写

根据某些条件,自动在Google电子表格中使所有插入的文本大写
EN

Stack Overflow用户
提问于 2019-10-18 14:55:52
回答 1查看 791关注 0票数 0

这是我第三次问这个问题(第一个第二位),因为以前的答案都有问题。所以这是我的(期末考试)第三个问题:

我有谷歌电子表格日历类型规划师,每天有8-10个用户正在插入数据。这些数据可以是数字、字母和一些unicode字符,有时它们都混合在一个单元格中。我希望所有这些文本数据在用户输入时自动更改为大写。

因此,任务是,将所有文本数据更改为大写,除.

  • 如果单元格值为日期
  • 如果单元格包含公式
  • 还排除了一些Unicode/封闭字母数字字符和这些文本符号字符,它们可能与同一单元格中的字母和数字混合。

现在,在我之前的尝试之后,我有了下面的脚本来完成工作,并保持上面的条件,除了一个。它不排除Unicode/括起来的字母数字字符,在大写更改后,它们变得非常小.

代码语言:javascript
复制
function onEdit(e) {
  if (Object.prototype.toString.call(e.range.getValue()) !== "[object Date]" ) {    
    if (!e.range.getFormula()) {
      e.range.setValue(e.value.toUpperCase());
    }
  }
}

所以..。在上述代码中,我如何也排除Unicode/封闭字母数字字符?

编辑:这是一个可视化的结果,它是如何运行的脚本现在。我用“是”指出正确的结果,用“否”指出错误的结果.脚本结果

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-24 09:18:40

因此,按照以前的答案,我在这个游戏中使用了一些REGEX,最后我只将字体大小更改为封闭的字母数字字符……

代码语言:javascript
复制
function font_size(cell){
  var font_size = 18
  var range = SpreadsheetApp.getActiveSheet().getRange(cell);
  var value = range.getValue().toString();
  var letterNumber = /[\w*\x00-\x7F\☎✈⛴]/;
  var rich = SpreadsheetApp.newRichTextValue();
  rich.setText(value); 
  for (var i=0;i<value.length;i++){ 
    if (letterNumber.test(value.charAt(i)) == false){
       var style = SpreadsheetApp.newTextStyle(); 
    style.setFontSize(font_size); 
    var buildStyle = style.build(); 
    rich.setTextStyle(i,i+1,buildStyle); 
    }   
  }
  var format = rich.build()
  range.setRichTextValue(format); 
}


function onEdit(e) {
if (!e.range.getFormula())
if (Object.prototype.toString.call(e.range.getValue()) !== "[object Date]" ) {
 e.range.setValue(e.value.toUpperCase());
 var cell = e.source.getActiveRange().getA1Notation();
 font_size(cell)
}
}

这对我来说适用于所有的情况。除以下外,大写本程序有效:

  • 如果单元格值为日期
  • 如果单元格包含公式
  • 如果单元格包含与文本混合的特定文本符号。

对于封闭的字母数字字符(代码function font_size(cell) ),它将字体大小更改为稍微大一些.var font_size = 18

理想情况下,最好的方法是排除括起来的字母数字字符,就像用日期和公式一样,但我不知道这是否可能,以及它是如何做到的。如果有人知道,请分享,但就目前而言,这是最好的解决方案。

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

https://stackoverflow.com/questions/58453382

复制
相关文章

相似问题

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