Копировать все
Если вы хотите скопировать все, включая Range
значения, цвет, цвет фона и т. Д. - используйте простой метод copyTo()
.Просто помните, что Range
размеры должны быть равны (ofc, вы всегда можете добавить обработку для учета этого).
/**
* Copies all;
* @param {Range} source copy from range;
* @param {Range} target copy to range;
*/
function copyAll(source,target) {
source.copyTo(target);
}
Условная копия
Если вы хотитечтобы скопировать только определенные свойства Range
, вышеупомянутый метод copyTo()
может быть вызван с помощью перечисления CopyPasteType
, например, так (обратите внимание, что из-за конфликта с вызовом двух аргументов copyTo(range,options)
необходима транспонирование arg -Вы можете жестко закодировать его внутри функции, если не ожидаете изменения ориентации):
/**
* Copies only specific props;
* @param {Range} source copy from range;
* @param {Range} target copy to range;
* @param {String} type enum CopyPasteType;
* @param {Boolean} transposed change orientation or not;
*/
function copyConditional(source,target,type,transposed) {
var t = SpreadsheetApp.CopyPasteType[type];
source.copyTo(target,t,transposed); //if transpose is not specified, will be treated as copyTo(destination,options)!;
}
Копирование с помощью геттера и сеттера
Например, используйте getBackgrounds()
и setBackgrounds()
соответственно (есть много других методов получения-установки, которые вы можете использовать отдельно вместо copyTo()
, см. ссылку Range
в полезных ссылках).
/**
* Copies background color;
* @param {Range} source copy from range;
* @param {Range} target copy to range;
*/
function copyColor(source,target) {
var color = source.getBackgrounds();
target.setBackgrounds(color);
}
Полезные ссылки
copyTo()
ссылка ; CopyPasteType
перечисление ссылка ; Range
класс ссылка ;