javascript - 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")}
}
请帮助解释为什么这不起作用。
谢谢。
解决方案
修改点:
- 如果要使用
test
,请修改为(/\s/g).test(editedCellValue)
. - 例如,您也可以使用
includes
likeeditedCellValue.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 触发器会自动运行。而且,在您的脚本中,已编辑的单元格被覆盖。请注意这一点。
笔记:
如果您想直接用脚本编辑器运行该功能,请将上面的脚本修改如下。
从
var range = e.range; if (range.getSheet().getSheetName().toLowerCase() != "test") return;
到
var range = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Test").getActiveRange();
参考:
推荐阅读
- rest - Thingsboard : Rest API 使用设备名称和客户用户凭据获取设备元数据(不使用租户帐户凭据)
- amazon-web-services - AWS ECR 跨账户复制和 KMS 加密
- c++ - 没有匹配函数调用“student::student()”错误
- java - 等待空 BlockingQueue 的首选方法
- macos - macOS 中不同的 cocoapods 版本
- python - 记录用户的帖子喜欢时间
- vue.js - Vue v3中的VideoJS播放列表超过最大调用堆栈大小错误
- android - 应用程序安装选项“默认 APK”和“应用程序包中的 APK”在 Gradle 任务方面有什么区别
- node.js - node.js中如何使用memoryStorage()上传文件
- mongodb - extsort-doc-group.xxxx 文件快速增长并挂起 mongo 服务器