2017-12-11 11 views
-1

Array内のrowの値を変更したい場合、Array内の行の値を変更したい場合は、前の行と同じresidentと同じ投薬を使用します。なぜgoogleシートスクリプトは私がそれを変更したくない行を変更するのですか?

//check if something from one time per day 
    if (startTime[resMedVals[resMedRow][3]]){ 
     medPlan[lastRow].push(startTime[resMedVals[resMedRow][3]]+":00");     
    }else{ 
     medPlan[lastRow].push("More") 
    }//end if time 

そして、それは「もっと」の値で背中やお得な情報行く:その場合、デフォルト値は「詳細」を設定する - それがタスクを繰り返している場合

最初はそれが見えます。初めてタスクを繰り返す場合は、最初の開始時間値を設定します。繰り返す場合は、必要な数だけ行をコピーします。

//if more times per day medicine, then replicate tasks 
    if(medPlan[lastRow][9]== "More"){ 
     var timesToReplicate = medPlan[lastRow][5].charAt(0) 

     for(var i=0; i < timesToReplicate; i++){ 
     if (i==0){ 
      //first time 
      medPlan[lastRow][9] = workDay["start"] 
      medPlan[lastRow][9] += ":00" 

     }else{ 

      //add entire last entire row 
      medPlan.push(medPlan[medPlan.length-1]); 

     }//end if else first time 

この部分まですべて正常に動作します。

次に、繰り返される(そして最初ではない)値に異なる値を設定します。

//adjust More values to appropriate starting times 
    for (var med=1; med < medPlan.length; med++){ 
    if(medPlan[med][2] == medPlan[med-1][2] && medPlan[med][1] == medPlan[med-1][1]){ 
     Logger.log(med) 
     var interval = Math.floor(workingHours/medPlan[med][5].charAt(0)); 

     medPlan[med][9] = interval 
    }//end if the same medication and the same resident 

    }//end for medPlan 

ただし、ログには正しい行があることが示されていますが、繰り返しタスクの最初の行も変更されます。

Log output 現在の結果は: Current result

すべてのヘルプははるかに高く評価します!

+0

実際にシートに値を設定するコードを投稿できますか? –

答えて

0

参照の問題でした。問題を解決するために.slice(0)を追加しなければなりませんでした。

medPlan.push(medPlan[medPlan.length-1].slice(0)); 
関連する問題