首页 > 解决方案 > 是否可以将单元格引用用作 getRange() 中的行/列位置?

问题描述

我正在尝试在电子表格库存中创建一个按钮,该按钮将在库存的右栏中快速添加正确的项目。我有一个专门用于此按钮的工作表,您可以在其中选择要添加到库存中的产品,然后单击“开始”,您的商品将进入我的库存的 10 列之一(取决于它是哪一列)以及数量和标签号. 列表中的选择与其每个托盘的物品数量(对于一个完整的托盘)以及它们应该在另一张表上的库存中进入的行号相关联。我使用过滤器功能在按钮表上显示这两个信息,以便当您按下按钮时,使用以下脚本行将显示的信息复制到库存中:

 var destSheet = ss.getSheetByName("Fiche");
 var lastRow = destSheet.getLastRow();
 var source = ss.getRange ('A3');
var destColumn = ss.getRange ('B15');

source.copyTo(destSheet.getRange(lastRow + 1, destColumn), {contentsOnly: true}); 

其中 A3 是我在一个完整托盘上的产品数量,B15 是应该复制它的列。似乎使用变量 lastRow 可以为 getRange 提供其行位置,但变量 destColumn 不适用于列位置。只有当我用一个常数替换它时它才有效。我猜从 getLastRow 和 getRange 返回的数据类型不一样?有什么建议吗?

标签: javascriptgoogle-apps-scriptspreadsheetinventory

解决方案


您非常接近解决方案。您只需要.getValues()在末尾添加,var destColumn = ss.getRange ('B15');因此它会读取单元格内的数字(因为.getRange()稍后使用的方法适用于此处详述的整数)。最终结果应如下所示:

function myFunction() {
  /*var ss = SpreadsheetApp.openById(
    "{SPREADSHEET ID}");*/
  var destSheet = ss.getSheetByName("Fiche");
  var lastRow = destSheet.getLastRow();
  var source = ss.getRange('A3');
  var destColumn = ss.getRange('B15').getValues();

  source.copyTo(destSheet.getRange(lastRow + 1, destColumn), {
    contentsOnly: true
  });
}

推荐阅读