为什么google sheet脚本会更改我不希望它更改的行?

时间:2017-12-11 16:06:55

标签: google-apps-script google-sheets-api

我希望更改Array中的行值,当它具有与前一行相同的驻留和相同的药物时。

最初它看起来是否是重复任务 - 如果是,则设置默认值"更多":

//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

但它也不断改变重复任务的第一行,即使Logs显示它确定了正确的行。

Log output 目前的结果: Current result

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

是引用问题。不得不添加.slice(0)来解决问题。

medPlan.push(medPlan[medPlan.length-1].slice(0));