首页 > 解决方案 > 将 GoogleSheet 复制到另一张工作表时出现数组大小问题

问题描述

我需要以数组形式获取一张数据,执行一些处理,然后将其保存到另一张表中。

无需尝试任何中间处理,

var booking = getRowsData(sheet);  //should create the array

var range = target.getRange(lastDBRow+1,1,numRows); //obtains the destination range (numRows logged as 3)

然后

range.setValues([booking]); //tries to save the values but throws an error "Incorrect range height, was 1 but should be 3"

检查预订对象

var response = ui.prompt(booking.length + "  " + booking[0].length, ui.ButtonSet.OK);

显示长度 3 和 booking[0].length (我理解为列)未定义....

那么为什么行长不匹配呢?列值是否应该未定义?

提前致谢!

完整的代码是:

var ss = SpreadsheetApp.getActive(); 
var sheet = ss.getSheetByName('New booking');
var headers = sheet.getRange(1, 1,1,sheet.getLastColumn());
var lastRow = sheet.getLastRow();
var numRows= lastRow-1

var target = ss.getSheetByName('Test');  //temp redirect to test sheet
var lastDBRow =target.getLastRow();      //we want to append the data after this


var booking = getRowsData(sheet);        // Get data to copy as array object
= ui.prompt(booking.length + "  " + booking[0].length, ui.ButtonSet.OK);
//                                       Returns 3  Undefined

var response = ui.prompt(numRows, ui.ButtonSet.OK);
//                                         Returns 3

var range = target.getRange(lastDBRow+1,1,numRows);   //  Must match range size
range.setValues([booking]);
}

标签: javascriptgoogle-apps-scriptgoogle-sheets

解决方案


在我看来,此范围内没有定义列数: var range = target.getRange(lastDBRow+1,1,numRows); // 必须匹配范围大小 range.setValues([booking]); 由于不打算使用调试,我无法确认我的想法,但我看到您正在定义起始行、起始列和行数,而不是列数。我不确定该错误消息是否会由此引起,但看起来需要考虑。


推荐阅读