Проблема при копировании листа в новую книгу Google Apps Script
Мне необходимо через консоль Apps Script сохранить копию активного листа, как новую таблицу Google. А также сохранить копию листа, как файл PDF.
Вот скрипт, который я смог написать:
function CopySheet() {
var newSpreadsheet = SpreadsheetApp.create('name1');
SpreadsheetApp.getActiveSheet().copyTo(newSpreadsheet)
DriveApp.createFile(newSpreadsheet.getAs("application/pdf"))
}
Скрипт работает, однако есть проблема в том, что в новой таблице есть мой лист, и пустой лист "Лист1". Этот пустой лист также выводится в файл PDF.
Подскажите, пожалуйста, как мне изменить скрипт для этой задачи?
Также возможно подскажете, как сохранять файлы не в корневой папке, а в папке по названию или ID?
Ответы (1 шт):
Автор решения: Михаил Носаев
→ Ссылка
const TARGET_FOLDER_ID = "ID папки, в которую нужно сложить pdf";
function copySheet() {
// создаем временный файл
const newSpreadsheet = SpreadsheetApp.create("name 1");
// копируем ативный лист во временный файл, называем его как в исходнике
const activeSheet = SpreadsheetApp.getActiveSheet();
activeSheet.copyTo(newSpreadsheet).setName(activeSheet.getName());
// удаляем лишний лист
const sheet =
newSpreadsheet.getSheetByName("Лист1") ||
newSpreadsheet.getSheetByName("Sheet1");
newSpreadsheet.deleteSheet(sheet);
// создаеим и перемещаем pdf в указанную папку
removeNewFile(
DriveApp.createFile(newSpreadsheet.getAs("application/pdf")).getId()
);
// удаляем временный файл
Drive.Files.remove(newSpreadsheet.getId());
}
function removeNewFile(fileId) {
// перемещене новых файлов списания в папку
var file = DriveApp.getFileById(fileId);
var folder = DriveApp.getFolderById(TARGET_FOLDER_ID);
file.moveTo(folder);
}