【问题标题】:How to copy last row from google sheet and copy to last row of other google sheet如何从谷歌表复制最后一行并复制到其他谷歌表的最后一行
【发布时间】:2019-06-26 00:42:09
【问题描述】:

我已经尝试了每个示例,并且已经为此工作了几天,感谢任何帮助。我只想复制一张纸的最后一行并将其复制到另一张纸的最后一行。最后一个示例复制所有行,而不仅仅是最后一行。

我已经尝试了所有可以找到的示例和示例,但均未成功。

function lastrow2() {
var source = SpreadsheetApp.openById('MY ID');
var sourcesheet = source.getSheetByName('sheet1');
var target = SpreadsheetApp.openById('MY ID')
var targetsheet = target.getSheetByName('sheet2');
var targetrange = targetsheet.getRange(1, 1, sourcesheet.getLastRow(), 
sourcesheet.getLastColumn());
var rangeValues = sourcesheet.getRange(1, 1, sourcesheet.getLastRow(), 
sourcesheet.getLastColumn()).getValues();
targetrange.setValues(rangeValues); 
}

我希望只是从源工作表中获取最后一行并将其复制到目标工作表的最后一行,而不是复制所有行。

【问题讨论】:

    标签: google-apps-script


    【解决方案1】:

    将一个电子表格的最后一行复制到另一个电子表格的最后一行

    电子表格都不是我测试中的脚本容器

    但其中一个可能是。

    function copyLastToLast() {
      var sss=SpreadsheetApp.openById('1u1d-eJVnR_UdAY_1ZnuF0kF3LLdnq30XIKW3wnQSFCY');
      var ssh=sss.getSheetByName('Sheet1');
      var srg=ssh.getRange(ssh.getLastRow(),1,1,ssh.getLastColumn());
      var svA=srg.getValues();
      var tss=SpreadsheetApp.openById('13hXYw9wrZtIi2OayGGurD2qOXZLaNcEZoculd179B_0');
      var tsh=tss.getSheetByName('sheet2');
      if(tsh.getLastRow()) {
        tsh.getRange(tsh.getLastRow(),1,1,svA[0].length).setValues(svA);
      }else{
        tsh.getRange(1,1,1,svA[0].length).setValues(svA);
      }
    }
    

    【讨论】:

    • 谢谢回复,我得到“范围的起始行太小”。在这一行: tsh.getRange(tsh.getLastRow(),1,1,svA[0].length).setValues(svA);
    • 如果目标工作表上没有数据则tsh.getLastRow()=0。我给了你你想要的,但我怀疑你想要 lastRow + 1。
    • 是的,我想覆盖第 1 行或替换它。嗨,抱歉,我遇到了各种新错误,也许我不明白如何编写您的新更改?这就是我现在所拥有的,但尝试了 0 和 =0 错误。感谢您的帮助
    • 复制新答案即可。我修改了它。如果目标表没有任何行,则将其放在第 1 行。
    【解决方案2】:
    • 您想将 Sheet1 最后一行的值复制到 Sheet2 的最后一行。

    如果我的理解是正确的,那么这个修改呢?

    发件人:

    var targetrange = targetsheet.getRange(1, 1, sourcesheet.getLastRow(), sourcesheet.getLastColumn());
    var rangeValues = sourcesheet.getRange(1, 1, sourcesheet.getLastRow(), sourcesheet.getLastColumn()).getValues();
    

    收件人:

    var targetrange = targetsheet.getRange(targetsheet.getLastRow() + 1, 1, 1, sourcesheet.getLastColumn());
    var rangeValues = sourcesheet.getRange(sourcesheet.getLastRow(), 1, 1, sourcesheet.getLastColumn()).getValues();
    

    注意:

    如果要覆盖到Sheet2的最后一行,请将targetsheet.getRange(targetsheet.getLastRow() + 1, 1, 1, sourcesheet.getLastColumn())修改为targetsheet.getRange(targetsheet.getLastRow(), 1, 1, sourcesheet.getLastColumn())

    参考:

    如果我误解了您的问题,请告诉我。我想修改它。

    编辑:

    从你的评论来看,这次修改怎么样?

    发件人:

    var targetsheet = targetsheet.getRange(targetsheet.getLastRow(), 1, 1, sourcesheet.getLastColumn());
    

    收件人:

    var targetrange = targetsheet.getRange(targetsheet.getLastRow() || 1, 1, 1, sourcesheet.getLastColumn());
    

    【讨论】:

    • 感谢您的帮助。第一个 From: To: 有效,但在源代码中添加了一个新行。当我使用代码覆盖时,我得到了。此处范围的起始行太小: var targetsheet = targetsheet.getRange(targetsheet.getLastRow(), 1, 1, sourcesheet.getLastColumn());
    • @Burt Lewis 感谢您的回复。我带来的不便表示歉意。我更新了我的答案。你能确认一下吗?
    猜你喜欢
    • 1970-01-01
    • 2020-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-26
    • 2011-05-29
    相关资源
    最近更新 更多