如何完成For循环以从另一个工作表中的列表中设置值?

时间:2018-03-09 14:52:54

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

以下功能用于循环浏览Google Sheet文件的“POTemplate”标签,并从第24行开始获取多个值,并将其列在同一文件的单独“POHistory”标签中。目前,它只是从第24行抓取这些细节,并将它们发布到'POHistory'选项卡10次。相反,我需要它从仅从第24行到第34行的POTemplate中填充的那些单元格获取值,并且每个条目一次发布到“POHistory”。希望我很清楚。

function Submit() {
  var app = SpreadsheetApp;
  var orderSheet = 
app.getActiveSpreadsheet().getSheetByName("POTemplate");
  var i = 24;
 for(i = 24; i<= 34; i++) {
  var poNO = orderSheet.getRange("h2").getValue();
  var poDate = orderSheet.getRange("h3").getValue();
  var vendor = orderSheet.getRange("c12").getValue();
  var skuNo = orderSheet.getRange(i, 3).getValue();
  var skuDesc = orderSheet.getRange(i, 4).getValue();
  var qty = orderSheet.getRange(i, 5).getValue();
  var uom = orderSheet.getRange(i, 6).getValue();
  var utCost = orderSheet.getRange(i, 7).getValue();
  var extCost = orderSheet.getRange(i, 8).getValue();
    var targetSheet = app.getActiveSpreadsheet().getSheetByName("POHistory");
     var nextRow = targetSheet.getLastRow() + 1; 
       targetSheet.getRange(nextRow, 1).setValue(poNO);
       targetSheet.getRange(nextRow, 2).setValue(poDate);
       targetSheet.getRange(nextRow, 3).setValue(skuNo);
       targetSheet.getRange(nextRow, 4).setValue(skuDesc);
       targetSheet.getRange(nextRow, 5).setValue(qty);
       targetSheet.getRange(nextRow, 6).setValue(uom);
       targetSheet.getRange(nextRow, 7).setValue(utCost);
       targetSheet.getRange(nextRow, 8).setValue(extCost);
 }}

1 个答案:

答案 0 :(得分:1)

试试这个:

function Submit() {
  var ss=SpreadsheetApp.getActive();
  var osh=ss.getSheetByName('POTemplate');
  var tsh=ss.getSheetByName('POHistory');
  var rg=osh.getDataRange();
  var vA=rg.getValues();
  var poNO=vA[1][7];
  var poDate=vA[2][7];
  var vendor=vA[11][2];
  for(var i=24;i<=34;i++){
    var skuNo=vA[i-1][2];
    var skuDesc=vA[i-1][3];
    var qty=vA[i-1][4];
    var uom=vA[i-1][5];
    var utCost=vA[i-1][6];
    var extCost=vA[i-1][7];
    tsh.appendRow([poNO,poDate,skuNo,skuDesc,qty,uom,utCost,extCost]);
  }
}