Как сделать вложенный цикл в google spreadsheet?
Ни при каких обстоятельствах не дразните систему setValue(), да еще и во вложенном цикле. Запись происходит не на ваш ПК, а на сервер. Кому понравится, когда его так дергают?

Чтобы работало даже с "черновиками", т.е. до 50 000 строк на лист, сначала берите ВСЕ данные, потом формируйте ГОТОВЫЙ массив, потом делайте setValue().

Примерно так:
function writeData(){
  //Не факт, что поможет, но вдруг
  SpreadsheetApp.flush();
  
  //Далее как у всех
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  
  var resultSheet = ss.getSheetByName("Result");
  var agentsSheet = ss.getSheetByName("Buyers");
  var productsSheet = ss.getSheetByName("Products");
  
  var aV = agentsSheet.getDataRange().getValues();
  var pV = productsSheet.getDataRange().getValues();
  
  //срезать шапку
  aV.shift();
  //  pV.shift();
  
  var res = [];
  
  for(var i = 0; i< aV.length; i++)
  {
    res.push([].concat([aV[i][0]], pV[0]));    
    for(var j = 1; j < pV.length; j++){      
      res.push([].concat([''], pV[j]));      
    }
  }
  
  res = res.slice(0, 50000);
  resultSheet.getDataRange().clear(); 
  resultSheet.getRange(1, 1, res.length, res[0].length).setValues(res);
}
Решил вот таким вот способом:
function writeData(){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var resultSheet = ss.getSheetByName("Result");
  var agentsSheet = ss.getSheetByName("Buyers ");
  var productsSheet = ss.getSheetByName("Products");
  var buyersNumRows = buyersSheet.getDataRange().getNumRows();
  var productsNumRows = productsSheet .getDataRange().getNumRows();
  var productsNumColumns = productsSheet.getDataRange().getNumColumns();
  var buyersData = agentsSheet.getDataRange().getValues();
  var productsData = productsSheet .getDataRange().getValues();
  resultSheet.getDataRange().clear();
  for(var i=1; i< buyersNumRows ; i++)
  {
    var lastrow = resultSheet.getLastRow();
    resultSheet.getRange(lastrow+1, 1).setValue(buyersData [i][0]);
    resultSheet.getRange(lastrow+1, 2, productsNumRows , productsNumColumns).setValues(products); 
  } 
}
в итоге получилось 24 000 строк. Задача выполнена, для всех покупателей сделали свои услуги.