是否可以在 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
});
}
我正在尝试在价差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
});
}