For loop 简单嵌套循环问题

For loop 简单嵌套循环问题,for-loop,google-apps-script,For Loop,Google Apps Script,我对编程非常陌生,我正试图在谷歌工作表上创建一个简短的宏。我想根据变量将单元格列表复制粘贴一定次数。第一列是位置列表,第二列是位置粘贴到第三列(F列)的次数。例如,我想将A4五次粘贴到F4列中。然后A5两次进入F8(F4+5行),然后一次进入,直到我的列表结束 我想出了下面的代码,但它目前在同一行(F4-F8)上复制我列表的每个位置5次,然后在下面5行上重复相同的过程,依此类推。我认为问题在于循环的顺序,但我真的搞不清楚 我遇到的另一个问题是,它只复制每个位置5次(B1),但我不确定如何使我的变

我对编程非常陌生,我正试图在谷歌工作表上创建一个简短的宏。我想根据变量将单元格列表复制粘贴一定次数。第一列是位置列表,第二列是位置粘贴到第三列(F列)的次数。例如,我想将A4五次粘贴到F4列中。然后A5两次进入F8(F4+5行),然后一次进入,直到我的列表结束

我想出了下面的代码,但它目前在同一行(F4-F8)上复制我列表的每个位置5次,然后在下面5行上重复相同的过程,依此类推。我认为问题在于循环的顺序,但我真的搞不清楚

我遇到的另一个问题是,它只复制每个位置5次(B1),但我不确定如何使我的变量numShift成为(B4-B16)的数组,以便复制每个位置的正确次数

任何帮助都将不胜感激

function myFunction() {
var app = SpreadsheetApp;
var ss = app.getActiveSpreadsheet()
var activeSheet = ss.getActiveSheet()
var numShift = activeSheet.getRange(4,2).getValue()
for (var k=0;k<65;k=k+5){
for (var indexNumLocation=0;indexNumLocation<15;indexNumLocation++){
for (var indexNumShift=0;indexNumShift<numShift;indexNumShift++)    
{var locationRange = activeSheet.getRange(4+indexNumLocation,1).getValue();  
activeSheet.getRange(4+k+indexNumShift,6).setValue(locationRange); 
}
}
}
}
函数myFunction(){
var app=电子表格应用程序;
var ss=app.getActiveSpreadsheet()
var activeSheet=ss.getActiveSheet()
var numShift=activeSheet.getRange(4,2).getValue()
对于(var k=0;k试试这个

function myFunction() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var lastRow = sheet.getLastRow();
  var data = [];
  var i, j;
  // get times count for each row from B4 to last row
  var times = sheet.getRange(4, 2, lastRow - 4, 1).getValues();
  // get the data that needs to be copied for each row from A4 to last row
  var values = sheet.getRange(4, 1, lastRow - 4, 1).getValues();
  // loop over each row
  for (i = 4; i <= lastRow; i++) {
    // run loop number of times for that row
    for (j = 1; j <= times[i]; j++) {
      // push the value that needs to be copied in a temporary array
      data.push([values[i][0]]);
    }
  }
  // finally put that array data in sheet starting from F4
  sheet.getRange(4, 6, data.length, 1).setValues(data);
}
函数myFunction(){
var sheet=SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var lastRow=sheet.getLastRow();
var数据=[];
varⅠ,j;
//获取从B4到最后一行的每行时间计数
var times=sheet.getRange(4,2,lastRow-4,1).getValues();
//获取从A4到最后一行的每行需要复制的数据
var values=sheet.getRange(4,1,lastRow-4,1).getValues();
//在每行上循环

for(i=4;i这个循环是for
for(var k=0;kt非常感谢你!我花了几天时间试图弄清楚:)。出于某种原因,我认为代码只在“位置5”(第8行)起作用。我尝试过使用它,但找不到修改“时间”和“值”行数的方法这是推在数据我接受你的话,我已经批准你的编辑!