如何在相同的谷歌脚本(谷歌表)中运行多个onEdit函数?

问题描述 投票:0回答:1

我一直在尝试许多不同的方式而且都没有效果。

我想要一个函数,当有人输入内容时,单元格的内容会自动转换为大写并消除所有重音。

例如:如果我输入“áéîõÂÃüÚ”,它立即变成“AEIOAAUU”。

以下我试过的案例:

  1. 用正常字母的重音更改字母,然后用相同的onEdit大写所有内容;
  2. 在不同的onEdit中分离函数;
  3. 只有一个onEdit调用另一个脚本中的函数。

这是我的代码:

function onEdit(e){
  try{
    myA(e);
    myE(e);
    myUpper(e);
  }
  catch(e){
    if(e){}}
}

function myFunction(){
  var app= SpreadsheetApp;
  var targetSheet= app.getActiveSpreadsheet().getSheetByName("Sheet1");

  onEdit();
} 

函数“myA”,“myE”和“myUpper”分别是以分开的脚本编写的,它们是:

function myUpper(e) {
   e.range.setValue(e.value.toUpperCase());
}

function myE(e) {
  e.range.setValue(e.value.replace(new RegExp("[[éèêëÉÈÊË]", 'g'),"E"));
}

function myA(e) {
  e.range.setValue(e.value.replace(new RegExp("[[áàâäãÁÀÂÄÃ]", 'g'),"A"));
}

运行这整个代码,只有函数“myE”有效。换句话说,只有带有重音符号的字母“e”变成“E”。

我究竟做错了什么?

提前致谢。

google-apps-script google-sheets
1个回答
0
投票

你可以使用一个onEdit()触发器来做到这一点。

function onEdit(e){
  var ss = e.source;
  var sheet = ss.getSheetByName('Sheet1');
  var value = e.value;
  var range = e.range;
  value = value.replace(new RegExp("[[éèêëÉÈÊË]", 'g'),"E");
  value = value.replace(new RegExp("[[áàâäãÁÀÂÄÃ]", 'g'),"A");
  value = value.toUpperCase();
  range.setValue(value);
}
© www.soinside.com 2019 - 2024. All rights reserved.