1

Google ドキュメント スプレッドシートのカスタム関数を作成しようとしています。これは本当に単純な問題だと思いますが、すぐに深みから抜け出してしまいました。私を助けてください。正しい方向へのポイントは大歓迎です。

googledocs スクリプト エディタで次のエラーが表示されます。

TypeError: Cannot call method "replace" of undefined. (line 50)

このコードの場合:

  function replaceGender(name, gender, comment) {

      var genderedComment = String();
      var name;
      var gender;
      var comment;

      if(gender == "m")
      {
          genderedComment = ungenderedComment.replace("(name)", name).replace(/\(He\/She\)/g,"He").replace(/\(His\/\Her\)/g,"His").replace(/\(his\/\her\)/g,"his").replace(/\(him\/\her\)/g,"him").replace(/\(he\/\she\)/g,"he");
      }
      else
      {   
          genderedComment = ungenderedComment.replace("(name)", name).replace(/\(He\/She\)/g,"She").replace(/\(His\/\Her\)/g,"Her").replace(/\(his\/\her\)/g,"her").replace(/\(him\/\her\)/g,"her").replace(/\(he\/\she\)/g,"she");
      }

      return genderedComment;
};

簡単だと思いますが、何か間違っています。

コードを変更したところ、エラーなしで動作するようになりましたが、最後は置き換え.replace(/\(he\/\she\)/g,"she");られ.replace(/\(he\/\she\)/g,"he"); ません。?? わかりません... 助けてくれてありがとう... 私が言ったように、私はたくさん学んでいます。

これが今のコードです

function replaceGender(name, gender, comment) {

  if(gender == "m")
  {
    comment = comment.replace(/\(name\)/g, name).replace(/\(He\/She\)/g,"He").replace(/\(His\/\Her\)/g,"His").replace(/\(his\/\her\)/g,"his").replace(/\(him\/\her\)/g,"him").replace(/\(he\/\she\)/g,"he");
  }
  else if(gender == "f")
  {   
    comment = comment.replace(/\(name\)/g, name).replace(/\(He\/She\)/g,"She").replace(/\(His\/\Her\)/g,"Her").replace(/\(his\/\her\)/g,"her").replace(/\(him\/\her\)/g,"her").replace(/\(he\/\she\)/g,"she");
  }

  return comment;
};
4

2 に答える 2

1

未定義のエラーを除いて、実際にはいくつかの問題があります。必要なものはすでに関数に渡されているため、関数の先頭でこれらの変数を宣言する必要はありません。

function replaceGender(name, gender, comment) {
  var genderedComment;

  if(gender == "m")
  {
  genderedComment = comment.replace("(name)", name).replace(/\(He\/She\)/g,"He").replace(/\(His\/\Her\)/g,"His").replace(/\(his\/\her\)/g,"his").replace(/\(him\/\her\)/g,"him").replace(/\(he\/\she\)/g,"he");
  }
  else
  {   
  genderedComment = comment.replace("(name)", name).replace(/\(He\/She\)/g,"She").replace(/\(His\/\Her\)/g,"Her").replace(/\(his\/\her\)/g,"her").replace(/\(him\/\her\)/g,"her").replace(/\(he\/\she\)/g,"she");
  }

  return genderedComment;
};
于 2013-02-14T02:51:35.360 に答える
0

という名前の変数ungenderedCommentが定義されていません。


次のように、変数が未定義かどうかをテストできます。

if (typeof someVariable === 'undefined') {
    alert("variable is undefined");
}

またはこのように:

if (! someVariable) {
    alert("variable is either undefined, null, false, zero, or some falsey value");
}

編集:コメントが指摘しているように、間違った変数を使用しているようです!

于 2013-02-14T02:45:16.853 に答える