Google Apps 脚本 - 来自 Google 表单 / Sheet 的神秘逗号值
Google Apps Script - Mysterious comma on value from Google Form / Sheet
这是我的场景:
我有一个 Google 表单,并将值添加到电子表格中。我有一个以 function onFormSubmit(event)
开头的 Apps 脚本
我使用 var Variable = event.namedValues["Question 1"];
从表单中获取值
我将此变量的值与一些“if 语句”一起使用。
此 Apps 脚本 运行 OK,但我仍在进行更改以添加新功能(在表单上添加更多问题,在脚本上添加新功能),但突然在其中一个变量中开始在该变量的值中出现逗号。
检查完所有脚本后,我决定将所有脚本复制到一个新脚本中。当我使用这个新场景(文件内容相同)时,神秘的逗号消失了。我继续进行新的开发,但经过一些新的更改(较新的更改)后,逗号开始出现在其值中的一个变量上。在进行一些新的更改后,逗号从在值的开头添加,开始出现在末尾。
我检查了电子表格上的值,它们没有逗号,只有当我在脚本中使用该变量的值时才会出现逗号。
在我保存事件的值后,我用 Logger.log(Variable)
打印值,逗号就在那里,所以我认为我的代码没有添加这个逗号。
知道为什么会这样吗?有没有办法检查脚本中变量字符(在本例中为逗号)的值?像 Replace(Variable,",","")
这样的东西,我可以在开始在脚本中使用它们之前检查从事件中获得的所有值。逗号不用于变量的值。
这些是受影响的行(脚本有 500 多行):
function onFormSubmit(event){
var Variable = event.namedValues["Question 1"];
Logger.log("Value after event" + Variable);
if (Variable == "AAAA"){
// do "something";
}
else {
// do "something different"
}
}
As the comma appears the if statement never gets a TRUE because the value starts to be "AAAA," so the do "something" never happens.
答案:
知道为什么会这样吗?
- 可能有一些拼写错误需要清理。如果您也可以提供您的代码或至少您是如何编写的,那就更好了。
有没有办法检查脚本中变量字符(在本例中为逗号)的值?
- 您可以使用
includes
. 检查变量中是否存在 character/string
var string = "I am Iron man,";
var hasComma = string.includes(","); // True
如果要替换所有逗号实例,请使用 replace
// Replace all commas with blank
var string = string.replace(",", ""); // "I am Iron man"
编辑:
因为e.namedValues["Question 1"]
returns一个对象,需要把变量改成string然后用replace
函数
代码:
var Variable = e.namedValues["Question 1"];
Variable = String(Variable).replace(",", "");
Logger.log("Value after event: " + Variable);
if (Variable == "AAAA"){
// do "something";
}
else {
// do "something different";
}
参考文献:
这是我的场景:
我有一个 Google 表单,并将值添加到电子表格中。我有一个以 function onFormSubmit(event)
我使用 var Variable = event.namedValues["Question 1"];
从表单中获取值
我将此变量的值与一些“if 语句”一起使用。
此 Apps 脚本 运行 OK,但我仍在进行更改以添加新功能(在表单上添加更多问题,在脚本上添加新功能),但突然在其中一个变量中开始在该变量的值中出现逗号。
检查完所有脚本后,我决定将所有脚本复制到一个新脚本中。当我使用这个新场景(文件内容相同)时,神秘的逗号消失了。我继续进行新的开发,但经过一些新的更改(较新的更改)后,逗号开始出现在其值中的一个变量上。在进行一些新的更改后,逗号从在值的开头添加,开始出现在末尾。
我检查了电子表格上的值,它们没有逗号,只有当我在脚本中使用该变量的值时才会出现逗号。
在我保存事件的值后,我用 Logger.log(Variable)
打印值,逗号就在那里,所以我认为我的代码没有添加这个逗号。
知道为什么会这样吗?有没有办法检查脚本中变量字符(在本例中为逗号)的值?像 Replace(Variable,",","")
这样的东西,我可以在开始在脚本中使用它们之前检查从事件中获得的所有值。逗号不用于变量的值。
这些是受影响的行(脚本有 500 多行):
function onFormSubmit(event){
var Variable = event.namedValues["Question 1"];
Logger.log("Value after event" + Variable);
if (Variable == "AAAA"){
// do "something";
}
else {
// do "something different"
}
}
As the comma appears the if statement never gets a TRUE because the value starts to be "AAAA," so the do "something" never happens.
答案:
知道为什么会这样吗?
- 可能有一些拼写错误需要清理。如果您也可以提供您的代码或至少您是如何编写的,那就更好了。
有没有办法检查脚本中变量字符(在本例中为逗号)的值?
- 您可以使用
includes
. 检查变量中是否存在 character/string
- 您可以使用
var string = "I am Iron man,";
var hasComma = string.includes(","); // True
如果要替换所有逗号实例,请使用 replace
// Replace all commas with blank
var string = string.replace(",", ""); // "I am Iron man"
编辑:
因为e.namedValues["Question 1"]
returns一个对象,需要把变量改成string然后用replace
函数
代码:
var Variable = e.namedValues["Question 1"];
Variable = String(Variable).replace(",", "");
Logger.log("Value after event: " + Variable);
if (Variable == "AAAA"){
// do "something";
}
else {
// do "something different";
}