文字列を検索するスクリプトを作成し、定義された語句が含まれている場合は適切なGoogleショッピングカテゴリを返します。しかし、時々私の関数は "未定義"を返し、私は本当に理由は分かりません。Google App Scriptが「未定義」を返すことがある理由を確かめてください
私は、使用するさまざまなGoogleショッピングカテゴリをすべて保持するシートと、分析する機能のデータを置く別のシートを持っています。ここで
は "未定義" 返す値の一例である:分析されている
テキスト:壁掛け>アートワーク&プリント
返される値:未定義
私のコード:
//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;
}
は、私はちょうどスペースを節約するために、1件の検索機能が含まれています。
これは単なる推測ですが、文字列の両側のスペースや単語間の余分なスペースが原因である可能性がありますか?これは目立たず、大きな問題を引き起こす可能性があります。たとえば、 "string"!= "string"などです。比較の前にtrim()とtoLowerCase()を呼び出すことによって文字列を正規化することが最善です。しかし、単語間に余分なスペースがあれば、それは役に立たないでしょう。私にとっては、「Wall Hangings」はカテゴリ名に従うのが悪いパターンのようです。アンダースコアまたはダッシュを含む小文字の単語を使用すると、文字列を比較するのがはるかに簡単になります。 –
また、コードにステップインしてバグがどこにあるのか把握するために、デバッガを習得して使用する必要があります。 –
私が間違っていると私を訂正しますが、単に「壁掛け」を探しているので、トリガーワード「壁掛け」の前または後にスペースがあるかどうかは関係ありません。しかし、言葉の余分なスペースやそのようなものがあれば、それは問題を引き起こすでしょう。 – Bokai