我编写了一个查看字符串的脚本,如果它包含已定义的单词或短语,则会返回相应的Google购物类别。但是,有时我的函数返回“undefined”,我不确定为什么。
我有一张工作表,其中包含我使用的所有不同的Google购物类别,另一张工作表,我将数据用于分析功能。
以下是返回“undefined”的值的示例:
正在分析的文字: Wall Hangings> Artwork&打印
返回值:未定义
我的代码:
//places the correct GS Category for specific item in column E:E
function placement() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('GSData');
var values = sheet.getDataRange().getValues();
for (i =1 ; i < values.length ; i++) {
//checks to see if the cell is blank if it is blank it runs it through the category();
if (values[i][4] === ""){
var gsCategory = category(values[i][3]);
sheet.getRange(i+1,5).setValue(gsCategory);
}
}
//checks the phrase and the finds the best suitable Category for the product
function category(x) {
//pulls in the Sheet data and sets it equal to the "cat" variable.
var cat = categoryData();
//search functions can be found on the search.gs file
//find specific keywords in the phrase then return the correct corresponding GS category
if(searchTowels(x)){
return cat[76];
}else if(searchWallHanging(x)){
Logger.log(cat[39]);
return cat[39];
}else if(searchWesterDecor(x)){
return cat[37];
}else if(searchLamps(x)){
return cat[66];
}
}
}
function categoryData() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('GSCategories');
var values = sheet.getDataRange().getValues();
return values;
}
function rawData() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('GSData');
var values = sheet.getDataRange().getValues();
return values;
}
我写了大量的其他if语句来涵盖我有产品的所有不同类别。但是,我不想将它们全部粘贴,因为它们会占用所有空间。
搜索功能:
function searchWallHanging(x) {
if(x.search("Wall Hangings") > 0){
return true;
}else {
return false;
}
我只包含一个搜索功能以节省空间。
答案 0 :(得分:1)
检查search()
返回值。那里有一个明显的错误
function searchWallHanging(x) {
if(x.search("Wall Hangings") > 0){
return true;
}else {
return false;
}
我会给你3个字符串以及它将返回什么
Purple Wall Hangings
- 返回 TRUE Green Dress Robes
- 返回 FALSE Wall Hangings Galore
- 返回未定义 秘密在于:x.search("Wall Hangings") > 0
因为search()
将返回第一个匹配。因此,在我们的示例#3中,因为它以我们的查询字符串开头,我们得到的x.search("Wall Hangings") == 0
不是 > 0
。轻松修复:
function searchWallHanging(x) {
if(x.search("Wall Hangings") >= 0){
return true;
}else {
return false;
}
编辑:哦,是的,这适用于所有类似的搜索。如果您的所有功能都与上面的功能类似,那么您就不会充分利用这些功能。我们的想法是永远不要编写类似的代码块,以便您可能希望重新考虑特定位在不同类别之间的工作方式。