Цель состоит в создании замороженных резервных копий электронной таблицы с несколькими листами. Резервная электронная таблица должна копировать значения и формат, но не формулы.
На некоторых листах есть =IMPORTRANGE
, что становится проблемой, если электронная таблица сначала копируется, а затем значения копируются в том же диапазоне. опять же, чтобы избавиться от формул, потому что новая электронная таблица требует доступа к импортированному диапазону в середине функции (что приводит к #REF в A1).
Этот вопрос явно задавался много раз, нокажется, ни один из ответов не решил эту проблему. Я посмотрел на эти вопросы (и даже больше): Ссылка 1 , Ссылка 2 , Ссылка 3 , Ссылка 4 , Ссылка 5 и Ссылка 6 . Я пытался реализовать фрагменты из ответов на эти вопросы или их комбинации, но безрезультатно. Было трудно отследить каждый бит фрагмента, который я тестировал.
Я пытался использовать copyTo()
либо для копирования целых листов в функции forEach
, копирование с опциями {contentsOnly:true}
и {formatOnly:true}
, нобыли неудачными. Либо copyTo()
хочет, чтобы диапазоны находились в одной и той же электронной таблице / листе, либо getDataRange()
не соответствует диапазону резервного копирования ...
Вот сценарий, который я сейчас использую, который успешно создает копиювсей таблицы с ценностями только. Я не могу вспомнить, от какого вопроса я получил его.
function copyEntireSpreadsheet(){
var ss,ssName,sheet,sheetName,data,destination
ss = SpreadsheetApp.openById("id").getSheets();
ssName = SpreadsheetApp.openById("id").getName();
destination = SpreadsheetApp.create(ssName + " - " + new Date().toLocaleString());
for (var i = 0; i < ss.length; i++){
sheet = ss[i];
sheetName = sheet.getSheetName();
data = sheet.getSheetValues(1, 1, sheet.getLastRow(), sheet.getLastColumn());
destination.insertSheet(sheetName);
destination.getSheets()[i+1].getRange(1, 1, sheet.getLastRow(), sheet.getLastColumn()).setValues(data);
}
destination.deleteSheet(destination.getSheetByName('Sheet1'));
}
Исходная электронная таблица имеет много форматирования с объединенными ячейками, условное форматирование и т. Д., Которые идеально подходят для копирования. Я также могу жестко запрограммировать определенные листы в сценарий, если это будет иметь какое-то значение с помощью альтернативного метода.
Короче говоря: я ищу замороженную резервную копию электронной таблицы с несколькими листами. Нужно копировать значения и форматирование, а не формулы.
Я мог бы что-то упустить в одном из ответов на все эти вопросы, поэтому я буду продолжать пытаться. В то же время, любая помощь / направление будет оценено. Заранее спасибо!
РЕШЕНО: @ Второй пример сценария Tanaike, приведенный ниже, является отличным обходным путем для копирования листов, которые имеют ссылки на другие электронные таблицы и, следовательно, требуют доступа к ним до перезаписывается только значениями. Большое спасибо @Tanaike за обширную помощь в этом - очень признателен.