我正在制作一张大纸,如果有gsheets配额,细胞就很珍贵。
我有一个范围,当数据自动更新时,脚本会自动将命名范围更新为数据的全长。
命名范围称为“gadatapull”。此范围位于“datapull”选项卡上。
两个标签。 “datapull”是转储新数据的地方,“data_prep”是我对数据进行处理的地方。刚刚进行了新的拉动后,datapull有2,733行数据,包括标题。
我希望data_prep与datapull具有相同的长度。在data_prep顶部添加7行文本。
当我更新数据的脚本运行时,我这样做:
// clear dataprep sheet for new data
var lastRow = 7;
var maxRows = dataprep.getLastRow();
if(maxRows - lastRow > 0) {
dataprep.deleteRows(lastRow+1, maxRows-lastRow);
}
data_prep有7行(因为脚本刚删除了7以上的所有行)。
现在,在data_prep单元格A7中,我有:
=query(indirect("gadatapull"),"select *")
预期结果是“gadatapull”中的所有新数据都会出现在data_prep选项卡中,而data_prep选项卡会相应地扩展。
但实际发生的是所有数据都按预期到达,但随后底部还有500行空白。这个500号码太圆了。让我觉得Gsheets会在某种情况下自动将此数字添加为默认值。
如何阻止Gsheets添加这些额外的500行?
答案 0 :(得分:1)
您可以在导入数据之前添加所有必需的单元格,而不是让工作表API扩展行数(这是您的假设,也可能是真的;-)。
我没有尝试过真实条件,但这应该有用。
顺便说一下,脚本也会导入数据。
function copyDataToSheet(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var dataprep = ss.getSheetByName('data_prep');
var datapull = ss.getSheetByName('datapull');
var lastRow = 7;
var maxRows = dataprep.getLastRow();
if(maxRows - lastRow > 0) {
dataprep.deleteRows(lastRow+1, maxRows-lastRow);
}
var datapullSize = datapull.getLastRow();
dataprep.insertRows(7,datapullSize);// insert exactly the number of rows you need.
var dataToCopy = datapull.getDataRange().getValues()
dataprep.getRange(7,1,dataToCopy.length,dataToCopy[0].length).setValues(dataToCopy);
}