bugfix> google-apps-script > 投稿

以下の使用中脚本、1つのセルに、メールテンプレートで指定した列の値として「0」が存在する場合、送信される最終的なメールには表示されません。

セルが空であるかのように、空の文字列に置き換えられます。

私は問題がその声明にあると思います:

// Replace variables from the template with the actual values from the data object.
// If no value is available, replace with the empty string.
for (var i = 0; i < templateVars.length; ++i) {
// normalizeHeader ignores ${"} so we can call it directly here.
var variableData = data[normalizeHeader(templateVars[i])];
email = email.replace(templateVars[i], variableData || "");
}

しかし、ブール記号を削除して「variableData」のみを残すと、問題は空のセルに移動します(送信された電子メールの値は0になりますが、空のセルは電子メールテキストに「未定義」として返されます)。

誰かが私を助けてくれることを願っています。 ありがとうございました

回答 1 件
  • JavaScriptへようこそ。ここで、0、 ''""null 、および undefined  すべては平均 false -y。

    あなたが持っている問題は、 || によって実行される論理OR  非厳密な等値比較を使用するため、 variableData  0で、 false に型変換されます  ( null の望ましい変換とともに  および undefined )および "" の代替置換  が選択されます。

    この問題を解決するには、 variableData の値のより厳密なチェックを実行する必要があります  それと交換する前に。

    たとえば、三項演算子を使用できます。

    var variableData = ...
    variableData = (!variableData && variableData !== 0) ? "" : variableData
    
    

    これは "" に置き換えられます  他の false のために -yの値ですが、数値 0 で置き換えることができます 。また、 String(0)  真実であるため、見つかった変数を文字列として返す場合、短絡演算子は望ましい結果をもたらすはずです。

あなたの答え