У меня есть электронная таблица, которую я использую для посещаемости, которая связана с формой Google, которую студенты используют для входа в систему. Я использую сценарий для копирования электронной таблицы в новый файл, но не форму, связанную с ним. Кажется, все работает, кроме некоторых из моих вкладок показывают #REF! и я должен войти в каждую ячейку и вручную обновить, чтобы все появилось правильно. Кажется, что ошибка связана с порядком копирования листов, поэтому если формула ищет лист, который еще не скопирован, она возвращает ошибку !? Один из обходных путей, который я обнаружил, - это переупорядочить вкладки на листе так, чтобы сначала копировались те вкладки, на которых хранятся мои необработанные данные из форм, хотя я бы предпочел, чтобы я мог пересчитать эти ячейки и иметь вкладки с необработанными данными в конце. Вот скрипт, который я использую:
function backUp()
{
//Open old spreadsheet
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
//Prepare new name
var formattedDate = Utilities.formatDate(new Date(), "EST", "MMMM dd, yyyy' 'h:mm a");
var name = spreadsheet.getName() + " Copy " + formattedDate;
//Prepare file system objects
var oldfile = DriveApp.getFileById(spreadsheet.getId());
var destination = DriveApp.getFolderById("1MFp9_z1hs4e-tpa2m_5SUKorkCbqLruZ");
//create new spreadsheet
var newSpreadsheet = SpreadsheetApp.create(name);
//move to destination folder
var newFile = DriveApp.getFileById(newSpreadsheet.getId());
var parents = newFile.getParents();
destination.addFile(newFile);
//copy all sheets to new spreadsheet
var sheets = spreadsheet.getSheets();
sheets.forEach(function(sheet){
sheet.copyTo(newSpreadsheet).setName(sheet.getName());
});
//remove empty sheet (created with new spreadsheet)
newSpreadsheet.deleteSheet(newSpreadsheet.getSheets()[0]);
}