“范围的坐标或尺寸是无效的。”使用lastRow作为范围时出错 [英] "The coordinates or dimensions of the range are invalid." error when using lastRow as range
问题描述
我试图从不同的工作表复制第一对名称(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是未定义的。 使用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!
解决方案
"ts" is undefined.
"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.
Array for using "setValues" is 2 dimensional array. "tempval[temp]" is 1 dimensional array. So an error occurs.
Documents of "getRange" are follows. https://developers.google.com/apps-script/reference/spreadsheet/sheet#getRange(Integer,Integer,Integer,Integer)
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屋!