【发布时间】:2020-08-06 23:22:29
【问题描述】:
我是使用谷歌应用程序脚本编码的新手,我正在尝试为我的电子表格制作一个简单的大小写检查器。
在这种情况下,我想检查名称的第一个字母是否大写,如果不是,我想用更正的版本替换它(同名,只是第一个字母大写。)
此代码在尝试在编辑器中运行时返回错误(无法读取未定义的属性“范围”。)我认为这是因为它使用了 onFormSubmit 触发器,因此测试它的唯一方法是实际提交表单回复。
当发布新的表单响应并触发该函数时,它似乎在电子表格的末尾没有做任何事情。包含名字和姓氏的新单元格(或与此相关的任何新单元格)根本不会改变,无论是否首字母大写。
当使用以相同方式引用单元格的单独函数时(获取新提交的单元格范围并在 for 循环中将它们指定为 row[numberhere]),它可以很好地读取它们的字符串。
function caseCheck(r) {
var range = r.range;
var data1 = range.getValue();
for (var r in data1) {
var row1 = data1[r];
var firstName = row1[2].getValue;
var lastName = row1[3].getValue;
var firstNameC = firstName[0].toUpperCase();
var lastNameC = lastName[0].toUpperCase();
if (firstName[0] != firstNameC) {
var firstNameL = firstName.length();
var firstNameSS = firstName.substring(1,firstNameL);
var firstNameCorrected = firstNameC + firstNameSS;
row1[2].setValue(firstNameCorrected);
}
if (lastName[0] != lastNameC) {
var lastNameL = lastName.length();
var lastNameSS = lastName.substring(1,lastNameL);
var lastNameCorrected = lastNameC + lastNameSS;
row1[3].setValue(lastNameCorrected);
}
}
}
【问题讨论】:
-
您不能将 onFormSubmit() 函数作为独立函数运行。如您所见,此函数需要一个参数。如果您只是尝试在不提供参数的情况下运行它,它将不会运行,因为它确实知道
r是什么。首先,您需要确保已将此函数注册为 onFormSubmit() 方法。在此处查看第一个答案:stackoverflow.com/questions/17992718/… -
我已经按照您参考的帖子中的详细信息设置了触发器。关于我可能做错的任何其他想法?