如何使用for循环来大幅减少代码长度?

时间:2017-12-06 14:35:00

标签: arrays loops for-loop

有人可以帮我使用for循环或其他什么来大幅缩短这段代码的长度吗?我只需要将一些数据从datAgg表复制到f5表,但我想使用数组和for循环来完成。我试过不同的时间,但它总是给我错误

  function regValori(){
      var datAgg = 
      SpreadsheetApp.getActiveSpreadsheet().getSheetByName("dati 
      aggiornati");
      var f5 = 
      SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Foglio5");
      var score1 = datAgg.getRange("P2").getValue(); // we want to store 
                                                        this
      //collecting names and values
      var Cname1=datAgg.getRange("A2").getValue();
      var score2 = datAgg.getRange("P3").getValue(); 
      var Cname2 = datAgg.getRange("A3").getValue();
      var score3 = datAgg.getRange("P4").getValue(); 
      var Cname3 = datAgg.getRange("A4").getValue();
      var score4 = datAgg.getRange("P5").getValue(); 
      var Cname4 = datAgg.getRange("A5").getValue();
      var score5 = datAgg.getRange("P6").getValue();
      var Cname5 = datAgg.getRange("A6").getValue();

      // get the row number where to put data
      // in correspodance with today date

      var riga = f5.getRange(2, 2).getValue();

      f5.getRange(2,3).setValue(Cname1);
      f5.getRange(2,4).setValue(Cname2);
      f5.getRange(2,5).setValue(Cname3);
      f5.getRange(2,6).setValue(Cname4);
      f5.getRange(2,7).setValue(Cname5);

     // this one to put the value for every day

     f5.getRange(riga, 3).setValue(score1);
     f5.getRange(riga, 4).setValue(score2);
     f5.getRange(riga, 5).setValue(score3);
     f5.getRange(riga, 6).setValue(score4);
     f5.getRange(riga, 7).setValue(score5);

}

1 个答案:

答案 0 :(得分:0)

我这样做

function regValori(){
    var datAgg = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("datiaggiornati");
    var f5 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Foglio5");


    var riga = f5.getRange(2, 2).getValue();
    for (var i = 2; i <= 6; ++i) {
        f5.getRange(riga, i + 1).setValue(datAgg.getRange("P" + i).getValue());
        f5.getRange(2, i + 1).setValue(datAgg.getRange("A" + i).getValue());
    }

}

您需要做的就是让索引i从最低值到最高值,并为getRange()构建字符串。也不需要这么多中间变量或数组,因为你可以在一个循环中完成每个操作。