【问题标题】:GetValue/SetValue Command + Do While Loop in Google Sheet File?GetValue/SetValue 命令 + 在 Google 表格文件中执行 While 循环?
【发布时间】:2018-03-07 18:33:22
【问题描述】:

我编写了一个“for 循环”(见下文),以从我正在使用的 Google 表格文件中名为“POTemplate”的选项卡下的订单条目表中获取值。它似乎可以很好地获取和设置变量,直到它到达 skuNO 变量。它将一个空白单元格值返回到名为 POHistory 的目标工作表中。

function Submit() {
  var app = SpreadsheetApp;
  var activeSheet = 
app.getActiveSpreadsheet().getSheetByName("POTemplate");
  for(var i = 24; i<= 34; i++) {
    var poNO = activeSheet.getRange("h2").getValue();
    var poDate = activeSheet.getRange("h3").getValue();
    var skuNo = activeSheet.getRange(i, 3).getValue();
    var skuDesc = activeSheet.getRange(i, 4).getValue();
    var qty = activeSheet.getRange(i, 5).getValue();
    var uom = activeSheet.getRange(i, 6).getValue();
    var utCost = activeSheet.getRange(i, 7).getValue();
    var extCost = activeSheet.getRange(i, 8).getValue();
    var targetSheet = 
 app.getActiveSpreadsheet().getSheetByName("POHistory");}
         targetSheet.getRange('a2').setValue(poNO);
         targetSheet.getRange('b2').setValue(poDate);
         targetSheet.getRange('c2').setValue(skuNo);
         targetSheet.getRange('d2').setValue(skuDesc);
         targetSheet.getRange('e2').setValue(qty);
         targetSheet.getRange('f2').setValue(uom);
         targetSheet.getRange('g2').setValue(utCost);
         targetSheet.getRange('h2').setValue(extCost);
}

【问题讨论】:

  • 为什么不是一个简单的 for 循环? for(var i = 24, i&lt;= 34, i++) 然后你用activeSheet.getRange(i, 3).getValue() 访问这些东西
  • 很好的建议,效果很好......现在只需要帮助确定如何使用我们刚刚获得的值在 POHistory 选项卡中设置值。谢谢你的帮助。他们将进入我的 POHistory 选项卡中的 LastRow + 1。

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


【解决方案1】:

如果您只想简单地复制单元格,copyTo 可能会很有用。如果您还想添加其他信息,那么appendRow 会很有帮助。如果你有很多单元格要操作,批处理方法getValues()setValues() 会很有帮助。

var numCols =  8 -  3 + 1;
var numRows = 34 - 24 + 1;
var vals = activeSheet.getRange(24, 3, numRows, numCols).getValues();
/* 
 * vals = [ [skuNo1, skuDesc1, qty1, uom1, utCost1, extCost1],
 *          [skuNo2, ...] ]
 *
 * Add code that does stuff with / to vals, like using 
 * Array.unshift() to insert a value at the start of a given row,
 * or constructing a new array based on vals but with different element orders,
 * some omitted elements, new elements, etc.
 */
var targetColStart = 1; // Column A
var targetRowStart = targetSheet.getLastRow() + 1;
// Select a range having the same size as the `vals` array of arrays.
// (Or whichever array of arrays is to be batch-printed.)
targetSheet.getRange(targetRowStart, targetColStart, vals.length, vals[0].length)
   .setValues(vals);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-23
    • 1970-01-01
    • 1970-01-01
    • 2011-06-02
    • 1970-01-01
    相关资源
    最近更新 更多