谷歌应用脚本如何检查编辑的单元格中是否包含空格?

4
以下代码在将带空格的值放入 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")}
}

请帮忙解决为什么这个不起作用。谢谢。
1个回答

1

修改点:

  • 如果您想使用test,请将其修改为(/\s/g).test(editedCellValue)
  • 例如,您也可以使用includes,如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")
  }
}
  • 在这种情况下,当您编辑单元格时,onEdit会自动由OnEdit触发器运行。而且,在脚本中,编辑的单元格被覆盖。请注意这一点。

注意:

  • If you want to directly run the function with the script editor, please modify above script as follows.

    • From

        var range = e.range;
        if (range.getSheet().getSheetName().toLowerCase() != "test") return;
      
    • To

        var range = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Test").getActiveRange();
      

参考资料:


谢谢!( / \s / g ).test( editedCellValue ) 正常工作。 - user13854773
@user13854773 谢谢您的回复。我很高兴您的问题已经解决。现在,我认为在您的情况下,(/\s/).test(editedCellValue) 也可以使用。 - Tanaike
1
也感谢您的提示,让我不要重复自己来清理代码。 - user13854773

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接