是否可以在 getRange() 中使用单元格引用作为 row/column 位置?

Is it possible to use a cell reference as row/column positions in getRange()?

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

 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 返回的数据类型不一样?有什么建议吗?

您已经非常接近解决方案了。您只需要添加 .getValues() at the end of the var destColumn = ss.getRange ('B15'); so it reads the number inside the cell (because the method .getRange() used later works with integers as detailed here)。最终结果应如下所示:

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