提高onEdit简单触发器的性能

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

我正在尝试从中间名中获取中间名首字母。我的脚本中的单元格 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);

        }
      }
  }
}
performance google-sheets google-apps-script triggers
1个回答
1
投票

试试这个方法:

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);
      }
    }
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.