Ответ:
Чтобы скопировать с одного листа на другой в той же электронной таблице, вы можете использовать метод Range.copyTo(destination, copyPasteType, transposed)
с перечислителем PASTE_NORMAL
для копирования как формул, так и текста. Для одной таблицы в другую можно использовать метод Sheet.copyTo()
.
в той же таблице:
Как вы уже поняли, getValues()
может иметь только тип Number, Boolean, Date или String и объект формулы не считаются ни одним из них. getDisplayValues()
также имеет ту же проблему в том, что он не может принять базовую формулу.
Изучив документацию для CopyPasteType
s, вы можете увидеть, что с помощью перечислимых паст PASTE_NORMAL
values, formulas, formats and merges
.
Используя это, можно затем скопировать весь лист за один go, всего за пару вызовов:
function copyAllTheThings() {
var ss = SpreadsheetApp.openById('<sheet-id>');
var range = ss.getSheetByName('exportSheet')
.getRange('A1:HZ2500');
var importTo = ss.getSheetByName('importSheet')
.getRange(range.getA1Notation());
range.copyTo(importTo, SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
}
Копирование из одной электронной таблицы на другой:
Если вы хотите импортировать лист из одной электронной таблицы в другую, вы можете использовать метод Sheet.copyTo()
. Это скопирует весь лист, а не просто диапазон , но его можно использовать так, чтобы сохранить формат данных и формулы из листа, который нужно скопировать:
function importOnOpen() {
var otherSS = SpreadsheetApp.openById('<spreadsheet-id-to-copy-to>');
var export = SpreadsheetApp.openById('<spreadsheet-id-to-copy-from>')
.getSheetByName('exportSheet');
export.copyTo(otherSS);
}
Запрос на добавление:
К сожалению, если методы copyTo()
слишком медленные из-за размера листа, вы мало что можете сделать с существующими функциями Sheets API и Apps Script.
Однако вы можете сообщить Google, что эта функция важна для API Sheets и вы хотели бы попросить их реализовать ее. Google Issue Tracker - это место, где разработчики могут сообщать о проблемах и делать запросы на функции для своих служб разработки.
Страница для запроса функции для API Google Sheets: здесь .
Надеюсь, это вам пригодится!
Ссылки: