【问题标题】:Is it possible to use a cell reference as row/column positions in getRange()?是否可以将单元格引用用作 getRange() 中的行/列位置?
【发布时间】:2020-03-02 22:04:35
【问题描述】:

我正在尝试在电子表格库存中创建一个按钮,该按钮将在我的库存右栏中快速添加正确的项目。我有一个专门用于此按钮的工作表,您可以在其中选择要添加到库存中的产品,然后单击“开始”,您的商品将进入我的库存的 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 返回的数据类型不一样?有什么建议吗?

【问题讨论】:

    标签: javascript google-apps-script spreadsheet inventory


    【解决方案1】:

    您非常接近解决方案。您只需要在var destColumn = ss.getRange ('B15'); 的末尾添加.getValues(),以便它读取单元格内的数字(因为稍后使用的方法.getRange() 可以处理整数,详见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
      });
    }
    

    【讨论】:

    • 非常感谢您花时间回答!我测试了您的解决方案,但它似乎不起作用。该按钮有效,但它不会将我的 copyTo 发送到右列。在我的测试中,B15 中的值为 6,当我按下按钮时,它将我的数据复制到第 2 列(或 B),而我希望它进入第 6 列。我认为你的代码 getColumn 抓住了列B15 所在的位置(因此总是 B)。我说的对吗?
    • 你完全正确@SimonThibert!误解了你的问题,我深感惭愧,请原谅我。我刚刚更新了我的答案以实现您的目标。
    • 不用害臊!在我决定在这里发帖之前,我已经为这个问题苦苦挣扎了大约 3 个小时。当我写我的问题时,我的大脑感觉就像一朵花椰菜,所以如果它有点不清楚,可能是我的错。您可能还想为将来会咨询此主题的人编辑答案的代码部分。今晚我一回家就会尝试你的新解决方案。
    • 你好@SimonThibert!我刚刚更新了代码,请原谅我忘记了。如果此答案已解决您的问题,请单击复选标记考虑accepting it。这向更广泛的社区表明您已经找到了解决方案,并为回答者和您自己提供了一些声誉。没有义务这样做。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多