我正在尝试从中间名中获取中间名首字母。我的脚本中的单元格 C12 加载中间名,而单元格 E12 加载中间名首字母。为了确定单元格 C12 中的文本是否包含两个单词,我使用了脚本
chckWrd.includes(" ")
。
示例:单元格 C12 等于“Dela Cruz”,单元格 E12 必须在输入时加载文本“DC”。
然后我使用 'chckWrd == ""' 来确定单元格 C12 是否为空。如果它是空的,那么单元格 E12 也必须是空的。
脚本运行良好,但加载速度缓慢。是否可以快速加载它,或者是否有更短的方法让我执行下面的脚本?
function onEdit(e) {
var ss = e.source;
var cell = e.range;
// STUDENT MIDDLE NAME
if(cell.getA1Notation() === "C12" && ss.getActiveSheet().getName() == "UserForm"){
var myGoogleSheet= SpreadsheetApp.getActiveSpreadsheet(); //declare a variable and set with active google sheet
var shUserForm = myGoogleSheet.getSheetByName("UserForm"); //declare a variable and set with the User Form worksheet
var chckWrd = shUserForm.getRange("C12").getValue();
if (chckWrd == "") { // check if cell is empty
shUserForm.getRange("E12").clear();
shUserForm.getRange("E12").setBackground('#FFFFFF').setFontFamily('Roboto').setFontSize('12').setHorizontalAlignment("center");
} else { // check if cell is not empty
if (chckWrd.includes(" ")) { // check if cell includes space
var wordArray = shUserForm.getRange("C12").getValue().split(" ");
var first = wordArray[0].substring(0,1);
var second = wordArray[1].substring(0,1);
var middleInitial = first + second;
Logger.log(middleInitial);
shUserForm.getRange("E12").setValue(middleInitial);
} else { // middle name has one word
var wordArray = shUserForm.getRange("C12").getValue().substring(0,1);
var first = wordArray[0].substring(0,1);
Logger.log(first); // first word
shUserForm.getRange("E12").setValue(first);
}
}
}
}
试试这个方法:
function onEdit(e) {
const sh = e.range.getSheet();
if (sh.getName() == "UserForm" && e.range.columnStart == 3 && e.range.rowStart == 12) {
var sh1 = e.source.getSheetByName("UserForm");
var chckWrd = sh1.getRange("C12").getValue();
if (chckWrd == "") {
sh1.getRange("E12").clear();
sh1.getRange("E12").setBackground('#FFFFFF').setFontFamily('Roboto').setFontSize('12').setHorizontalAlignment("center");
} else {
if (chckWrd.includes(" ")) {
var wordArray = sh1.getRange("C12").getDisplayValue().split(" ");
var first = wordArray[0].substring(0, 1);
var second = wordArray[1].substring(0, 1);
var middleInitial = first + second
sh1.getRange("E12").setValue(middleInitial);
} else {
var wordArray = sh1.getRange("C12").getValue().substring(0, 1);
var first = wordArray[0].substring(0, 1);
sh1.getRange("E12").setValue(first);
}
}
}
}