我一直在浏览不同的论坛& stackoverflow在我的脚本中找到问题的解决方案。让我解释一下:
我有两个不同的电子表格,每个电子表格包含一张表格。我想整合来自" Spreadsheet1 - Sheet 1"到"电子表格2 - 数据"。我的逻辑是来自Spreadsheet1的数据被复制到Spreadsheet2(这非常有效)。 但是,我还希望我的脚本删除在Spreadsheet1中找到的数据,这是我被阻止的地方。我试图使用方法" deleteRows()"但这似乎不能正常工作。
这是我的剧本:
function Consolidate() {
var source = SpreadsheetApp.openById('Spreadsheet1_unique_id');
var sourcesheet = source.getSheetByName('Sheet1');
var target = SpreadsheetApp.openById('Spreadsheet2_unique_id')
var targetsheet = target.getSheetByName('Data');
var targetrange = targetsheet.getRange(targetsheet.getLastRow(), 1, sourcesheet.getLastRow(), sourcesheet.getLastColumn());
var rangeValues = sourcesheet.getRange(2, 1, sourcesheet.getLastRow(), sourcesheet.getLastColumn()).getValues();
targetrange.setValues(rangeValues);
sourcesheet.deleteRows(2, sourcesheet.getLastRow());
}
我的Google Apps脚本的调试功能表明" 这些行超出范围"。在这种情况下,这意味着什么?
通过我的搜索,我明白我在 deleteRows()中定义的第二个参数并不代表一行行而只是一行。知道我试图找到一种方法来获得正确的东西。但是,每次尝试都是由非工作脚本结束的。 我没弄错,或者我错了吗?
有人对如何达到预期结果有所了解吗?
非常感谢你的帮助!
答案 0 :(得分:0)
我在测试电子表格中运行了一些测试,只需添加-1(因为你开始第2行)它应该可以解决你的问题。
function Consolidate() {
var source = SpreadsheetApp.openById('Spreadsheet1_unique_id');
var sourcesheet = source.getSheetByName('Sheet1');
var target = SpreadsheetApp.openById('Spreadsheet2_unique_id')
var targetsheet = target.getSheetByName('Data');
var targetrange = targetsheet.getRange(targetsheet.getLastRow(), 1, sourcesheet.getLastRow(), sourcesheet.getLastColumn());
var rangeValues = sourcesheet.getRange(2, 1, sourcesheet.getLastRow(), sourcesheet.getLastColumn()).getValues();
targetrange.setValues(rangeValues);
sourcesheet.deleteRows(2, sourcesheet.getLastRow()-1);
}
希望这会有所帮助。如果有任何问题我会在评论中回答。