【问题标题】:Copy -Paste into next available row in selected column复制 - 粘贴到选定列中的下一个可用行
【发布时间】:2020-11-13 18:04:19
【问题描述】:

我正在尝试编写一个绑定到按钮的脚本,以便在单击它时根据 A 列中的内容将我选择的范围复制到下一个可用行中。我在 D 列中有公式,当前运行时将其粘贴到下一个可用行,但我希望它根据 A 列是否有数据粘贴到下一个可用行。

这是我目前所拥有的

function myFunction() {
 var ss = SpreadsheetApp.getActiveSpreadsheet ();
 var source = ss.getRange ("JOB BUILD!A3:E21");
 var destSheet = ss.getSheetByName("JOB IN PROGRESS");
 var destRange = destSheet.getRange(destSheet.getLastRow()+1,1);
 source.copyTo (destRange, {contentsOnly: false}) 
      }

【问题讨论】:

  • 欢迎来到Stack Overflow。你的代码有问题吗?问题是什么?
  • 这能回答你的问题吗? Determining the last row in a single column
  • 这就是你的全部代码吗?我没有看到 doGet 或任何其他触发函数。另外,你提到的这个按钮在哪里?
  • 代码有效,但粘贴在下一个可用行中。我希望它根据 A 列粘贴到下一个可用行并覆盖它下面的任何内容。因此,如果 A 列的数据向下到第 4 行,但 D 列的数据向下到第 8 行,则 id 喜欢粘贴到第 5 行而不是第 9 行
  • 该按钮是我在 google 表格中将此脚本分配给的绘图。该代码当前正在单击按钮。我只是不知道如何使它粘贴到正确的范围内。

标签: google-apps-script google-sheets


【解决方案1】:

如果您想根据某列的最后一个可用行粘贴值,则必须找到该列的最后一行。

为了获取某一行的最后一行,可以从这个answer使用这个方法。假设您要根据 destSheet 中的列 A 粘贴值,您可以尝试以下代码:

function myFunction() {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sourceSheet = ss.getSheetByName("JOB BUILD");
    var sourceData = sourceSheet.getRange("A3:E21");
    var destSheet = ss.getSheetByName("JOB IN PROGRESS");
    var aRange = destSheet.getRange("A1:A").getValues();
    var colA = aRange.filter(String).length;
    var destRange = destSheet.getRange(colA, "COL_NO", "NO_OF_ROWS", "NO_OF_COLS");
    sourceData.copyTo(destRange, {
        contentsOnly: false
    })
}

注意

请记住,根据两张表中数据的确切结构,您将必须调整范围。

参考

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-21
    • 1970-01-01
    • 1970-01-01
    • 2015-12-06
    • 1970-01-01
    相关资源
    最近更新 更多