0

スクリプトの次の部分を使用して、配当金が実際に支払われる日の EUR に対する複数の通貨の為替レートを取得しようとしています。これは、Google スプレッドシートでポートフォリオのパフォーマンスを計算するために使用する EUR の値を計算することを覚えておく必要がないことを確認するためです。

基本的に、現在の日付 (変数 "tamapaiva") と特定の配当が支払われる日付 (変数 "osingonmaksupaiva") のセルがあります。スクリプトでは、これら 2 つの日付を比較していますが、デバッグ ビューでまったく同じであることが示されていても、何らかの理由で一致しません。

理由は非常に単純かもしれませんが、ご覧いただければ幸いです。

  // Calculate the value of dividends in EUR
  var i = 3;
  var tamapaiva = osinkoSheet.getRange(1, 9).getValue();
  var osingonmaksupaiva = "";
  var osingonmaksupaiva = osinkoSheet.getRange(i,1).getValue();

  while(osingonmaksupaiva != ""){
    var valuutta = osinkoSheet.getRange(i,5).getValue();
    if(valuutta == "GBP" && tamapaiva == osingonmaksupaiva){
      var kurssi = portfolioSheet.getRange(2, 16).getValue();
      osinkoSheet.getRange(i, 6).setValue(kurssi);
    }
    else if(valuutta == "USD" && tamapaiva == osingonmaksupaiva){
      var kurssi = portfolioSheet.getRange(2, 15).getValue();
      osinkoSheet.getRange(i, 6).setValue(kurssi);
    }
    else if(valuutta == "DKK" && tamapaiva == osingonmaksupaiva){
      var kurssi = portfolioSheet.getRange(2, 17).getValue();
      osinkoSheet.getRange(i, 6).setValue(kurssi);
    }
      i++;
      osingonmaksupaiva = osinkoSheet.getRange(i,1).getValue();
  }
4

1 に答える 1

0

回答の上に JavaScript で 2 つの日付を比較する

入力を Date オブジェクトに変換し、一般的な形式に変換するだけです。これがないと == または === 比較を使用できないためです。.getDate() を使用してミリ秒に変換し、以下のように比較できます。

例:

var tamapaiva = osinkoSheet.getRange(1, 9).getValue();
var osingonmaksupaiva = osinkoSheet.getRange(i,1).getValue();

に変更する必要があります

var tamapaiva = new Date(osinkoSheet.getRange(1, 9).getValue()).getTime();
var osingonmaksupaiva = new Date(osinkoSheet.getRange(i,1).getValue()).getTime();

上記は両方の値を Number に変換するため、簡単に比較できます。したがって

tamapaiva == osingonmaksupaiva

望ましい結果が得られます。

于 2013-09-26T11:43:10.393 に答える