javascript - 如何完成 For 循环以从一张纸中的列表中设置另一张纸中的值?

标签 javascript google-apps-script google-sheets

下面的函数旨在循环遍历我的 Google Sheet 文件的“POTemplate”选项卡,并获取从第 24 行开始的多个值,并将它们列在同一文件内的单独“POHistory”选项卡中。目前,它仅从第 24 行获取这些详细信息,并将它们发布到“POHistory”选项卡 10 次。相反,我需要它仅从 POTemplate 中第 24 行到第 34 行填充的那些单元格获取值,并每个条目发布到“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);
 }}

最佳答案

试试这个:

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]);
  }
}

关于javascript - 如何完成 For 循环以从一张纸中的列表中设置另一张纸中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49196343/

相关文章:

javascript - 我绑定(bind)到 HTML 按钮的这个 Javascript 函数根本没有运行

javascript - Bootstrap 模式使用 Angular 绑定(bind)数据而不是绑定(bind)

与谷歌侧边栏一起使用时的 jquery ui Accordion 标题高度问题

google-apps-script - 有没有办法通过 Google Apps 脚本修改实时日历事件?

google-sheets - 增加减少箭头和谷歌电子表格中的百分比变化

csv - 如何从已上传到我们的 Google 云端硬盘的 CSV 自动导入和替换 Google 表格中的数据?

google-sheets - 如何为下一个公式复制每 3 行(带有公式的 2 行单元格和 1 个空白单元格)只需复制 1 个单元格而不是 3 个单元格

javascript - 学习用于数据可视化的 d3.js

javascript - 通过 JavaScript 设置按钮文本

google-apps-script - 通过选中复选框触发功能