“范围的坐标或尺寸是无效的。”使用lastRow作为范围时出错 [英] "The coordinates or dimensions of the range are invalid." error when using lastRow as range

查看:102
本文介绍了“范围的坐标或尺寸是无效的。”使用lastRow作为范围时出错的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图从不同的工作表复制第一对名称(A2)和电子邮件(B2),并将它们粘贴到主工作表中。



在主表中,我需要将它们复制到另一个之下,所以我想用 getlastRow() ,在粘贴第一个值后获得第一个空行。



此时,即使我设法将这些值以不特定的顺序粘贴到主表中,我也会这样做。



运行我的脚本时,出现以下错误 - 范围的坐标或尺寸无效



我的代码如下。

  function myFunctions(){
var sourceSpreadsheet = SpreadsheetApp.openById(); //源电子表格
var sheets = sourceSpreadsheet.getSheets(); //工作表数组

var targetSpreadSheet = SpreadsheetApp.openById();
var targetSheet = targetSpreadSheet.getSheetByName('Main'); //

for(var i = 1; i< sheets.length; i ++){
var temp = i;
var tempval = sheets [i] .getRange(2,1,1,2).getValues();

var lastrow = ts.getLastRow();
var lastcol = ts.getLastColumn();

targetSheet.getRange(lastrow,1,1,lastcol).setValues(tempval [temp]);
}

}

如果您有任何输入,请分享



感谢您的帮助! b

  • ts是未定义的。


  • 是具有A2:B2的二维数组。因此,for开头的循环显示超出范围。

  • 使用setValues的数组为2二维数组。 tempval [temp]是1维数组。所以发生错误。


  • getRange的文档如下。 https://developers.google .com / apps-script / reference / spreadsheet / sheet#getRange(Integer,Integer,Integer,Integer)


  • 你可能想要。 lastrow和lastcol是数据的最后一行和一列。因此,数据被覆盖到目标表的最后一行数据。



  • 基于上述内容,修改后的脚本如下。

      function myFunctions(){
    var sourceSpreadsheet = SpreadsheetApp.openById(); //源电子表格
    var sheets = sourceSpreadsheet.getSheets(); //工作表数组
    var targetSpreadSheet = SpreadsheetApp.openById();
    var targetSheet = targetSpreadSheet.getSheetByName('Main'); //
    for(var i = 1; i< sheets.length; i ++){
    // var temp = i;
    var tempval = sheets [i] .getRange(2,1,1,2).getValues();
    var lastrow = targetSheet.getLastRow(); //是否是targetSheet?
    var lastcol = targetSheet.getLastColumn(); //是否是targetSheet?
    targetSheet.getRange(lastrow + 1,lastcol + 1,1,2).setValues(tempval);


    $ / code $ / pre

    我可以问你想要什么吗? p>

    I'm trying to copy the first pair of name(A2) and emails(B2) from different sheets, and paste them in a Main sheet.

    In the Main Sheet, I need them copied one under the other, so I thought of using getlastRow(), to get the first empty row after the first value is pasted.

    At this point, I would do even if I managed to paste the values in no particular order, in the Main sheet.

    When I run my script I get the following error - The coordinates or dimensions of the range are invalid

    My code is below.

    function myFunctions() {
     var sourceSpreadsheet = SpreadsheetApp.openById(); // source spreadsheet
     var sheets = sourceSpreadsheet.getSheets(); // array of sheets  
    
     var targetSpreadSheet = SpreadsheetApp.openById();
     var targetSheet = targetSpreadSheet.getSheetByName('Main'); // 
    
     for(var i=1; i < sheets.length;i++){  
         var temp = i;
         var tempval = sheets[i].getRange(2,1,1,2).getValues();
    
         var lastrow = ts.getLastRow();
         var lastcol = ts.getLastColumn();
    
        targetSheet.getRange(lastrow,1,1,lastcol).setValues(tempval[temp]);
      }
    
    }
    

    Please share if you have any input.

    Thanks in advance for help!

    解决方案

    1. "ts" is undefined.

    2. "tempval" is 2 dimensional array with "A2:B2". And the length is 1. So the loop of "for" with start of 1 shows out of range in Array.

    3. Array for using "setValues" is 2 dimensional array. "tempval[temp]" is 1 dimensional array. So an error occurs.

    4. Documents of "getRange" are follows. https://developers.google.com/apps-script/reference/spreadsheet/sheet#getRange(Integer,Integer,Integer,Integer)

    5. Although about this, perhaps you may want. "lastrow" and "lastcol" are last row and column of data. So data is overwritten to last row data of "targetsheet".

    Based on above, the modified script is as follows.

    function myFunctions() {
      var sourceSpreadsheet = SpreadsheetApp.openById(); // source spreadsheet
      var sheets = sourceSpreadsheet.getSheets(); // array of sheets  
      var targetSpreadSheet = SpreadsheetApp.openById();
      var targetSheet = targetSpreadSheet.getSheetByName('Main'); // 
      for(var i=1; i < sheets.length;i++){  
        // var temp = i;
        var tempval = sheets[i].getRange(2,1,1,2).getValues();
        var lastrow = targetSheet.getLastRow(); // Is ts targetSheet?
        var lastcol = targetSheet.getLastColumn(); // Is ts targetSheet?
        targetSheet.getRange(lastrow + 1, lastcol + 1, 1, 2).setValues(tempval);
      }
    }
    

    Can I ask you about what you want?

    这篇关于“范围的坐标或尺寸是无效的。”使用lastRow作为范围时出错的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

    查看全文
    登录 关闭
    扫码关注1秒登录
    发送“验证码”获取 | 15天全站免登陆