在源范围上使用 getValues(),在目标上使用 setValues()。您必须确保范围是相同的尺寸。然后,您可以 clear() 源。
这是一个可以完成这项工作的实用程序函数。它也可以作为 gist 使用。请注意,它将范围对象作为参数。
代码
/**
* Move all values from source range to destination range. Upon
* completion, source range will be cleared. Source values will
* be moved into a destination range starting at the "top left"
* of the destination range, using the dimensions of the source
* range. This is a blind copy, with no overwrite test.
*
* @param {Range} source Range Object to take values from.
* @param {Range} destination Range Object to receive values.
*
* @returns nothing
*/
function moveRange(source,destination) {
var sourceSheet = source.getSheet();
var destSheet = destination.getSheet();
var sourceData = source.getValues();
var dest = destSheet.getRange(
destination.getRow(), // Top row of destination
destination.getColumn(), // left col of destination
sourceData.length, // # rows in source
sourceData[0].length); // # cols in source (elements in first row)
dest.setValues(sourceData);
source.clear();
}
测试功能
成功的测试将清除整个源范围,其内容将仅作为值出现在目标范围中。无论提供什么作为目标,目标尺寸都将与源尺寸相匹配 - 它只是锚定移动的左上角。
function test_moveRange() {
var sourceSheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];
var destSheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[1];
var source = sourceSheet.getRange("A7:C10");
var destination = destSheet.getRange("C4:H2");
moveRange(source,destination);
}