首页 > 解决方案 > Google App Script检查编辑的单元格是否包含空格

问题描述

当我在editedCellValue中放置一个带有空格的值时,以下代码不起作用

function onEdit(e) {

    var editedCellRange = 
    SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Test").getActiveRange();
    var editedCellValue = 
    SpreadsheetApp.getActiveSpreadsheet().getSheetByName("test").getActiveRange().getValue;
    if (RegExp(editedCellValue).test("\s")==true){editedCellRange.setValue("contains space")}
    else 
    {editedCellRange.setValue("ELSE IF")}
}

请帮助解释为什么这不起作用。

谢谢。

标签: javascriptregexif-statementgoogle-apps-scriptgoogle-sheets

解决方案


修改点:

  • 如果要使用test,请修改为(/\s/g).test(editedCellValue).
  • 例如,您也可以使用includeslike editedCellValue.includes(" ")。而且,indexOf可以使用。
  • 在您的情况下,我认为也可以使用事件对象。
  • 在您的脚本中,由于未运行,var editedCellValue = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("test").getActiveRange().getValue;因此不会检索该值。getValue请加()getValue()
  • 你可以声明一个SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Test")

当以上几点反映到您的脚本时,它变成如下。

修改后的脚本:

function onEdit(e) {
  var range = e.range;
  if (range.getSheet().getSheetName().toLowerCase() != "test") return;
  var editedCellValue = range.getValue();
  if ((/\s/g).test(editedCellValue)) {  // or if (editedCellValue.includes(" ")) {
    range.setValue("contains space")
  } else {
    range.setValue("ELSE IF")
  }
}
  • 在这种情况下,当您编辑单元格时,onEditOnEdit 触发器会自动运行。而且,在您的脚本中,已编辑的单元格被覆盖。请注意这一点。

笔记:

  • 如果您想直接用脚本编辑器运行该功能,请将上面的脚本修改如下。

    •   var range = e.range;
        if (range.getSheet().getSheetName().toLowerCase() != "test") return;
      
    •   var range = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Test").getActiveRange();
      

参考:


推荐阅读