google-apps-script - 如何在同一个谷歌脚本(谷歌表格)中运行多个 onEdit 函数?
问题描述
我一直在尝试许多不同的方法,但都没有奏效。
我想要一个功能,当有人键入内容时,单元格的内容会自动变为大写并消除所有重音。
例如:如果我输入“áéîõÂÃüÚ”,它会立即变成“AEIOAAUU”。
我尝试过以下案例:
- 在同一个 onEdit 中将带重音的字母更改为普通字母,然后将所有内容大写;
- 将不同onEdit中的功能分开;
- 只有一个 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”。
我究竟做错了什么?
提前致谢。
解决方案
您可以使用一个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);
}
推荐阅读
- linux - 如何将左三角形 (<) 作为别名命令的一部分?
- javascript - 如何用 NestJS 重新抛出 HttpService 调用的错误?
- html - 如何为不同的css文件编写不同的html链接?
- javascript - 如何在javascript中等待grpc响应
- reactjs - 当状态在不同的 reducer 中改变时重新渲染组件
- http - 未提供静态目录
- react-native - 何时从 Authentication SwitchNavigator 导航?
- javascript - 未找到模块:错误:无法解析“C:\dev\jszip-test\node_modules\jszip\lib”中的“流”
- node.js - 我可以使用 require 获取 createSagaMiddleware 吗?
- android - Android Kotlin 无法更改函数中的文本字符串