Меня зовут Александр и я фрилансер, основная моя специализация — это Google Apps Script. Одному из заказчиков потребовалось программно конвертировать файлы Microsoft Excel в Google Spreadsheets. Я раньше с такой задачей не сталкивался, поэтому призвал на помощь Google. Перерыл кучу форумов, но готового решения не нашёл. Пришлось писать свой велосипед. И хотя код получился коротким, времени на нахождение решения потребовалось не мало. Вот то, что получилось:
function convert(folderId) {
var folderIncoming = DriveApp.getFolderById(folderId);
var files = folderIncoming.getFilesByType(MimeType.MICROSOFT_EXCEL_LEGACY);
while (files.hasNext()) {
var source = files.next();
var sourceId = source.getId();
var fileName = source.getName().replace('.xls', '');
var file = {
title: fileName,
};
file = Drive.Files.copy(file, sourceId, {convert: true});
}
}
Эта функция принимает в качестве параметра ID папки, в которой находятся файлы нуждающиеся в конвертировании. Находит в этой папке файлы соответствующие типу MimeType.MICROSOFT_EXCEL_LEGACY, это XLS документы Microsoft Excel, и создаёт их копии в этой же папке. При копировании и происходит конвертирование формата, за это отвечает параметр convert: true. Если в имени файла оригинала присутствует расшитение .xls, то оно удаляется.
Если нужно обрабатывать XLSX файлы, то меняем тип на MimeType.MICROSOFT_EXCEL и
var fileName = source.getName().replace('.xls', '');
на
var fileName = source.getName().replace('.xlsx', '');
Но если просто скопировать этот код и попытаться запустить, то он выдаст ошибку ''ReferenceError: Объект «Drive» не определен.". Для её устранения нужно в редакторе кода, в меню «Ресурсы» выбрать пункт «Дополнительные функции Google...». В появившемся окне, находим «Drive API» и включаем его.
Затем, в меню «Ресурсы» выбрать пункт «Проект Developers Console...». В появившемся окне, переходим по ссылке с ID проекта.
На появившейся странице, в левом меню выбираем «APIs & auth» затем «APIs». Появится список API, в нём переходим по ссылке «Drive API».
Нажимаем на кнопку «Enable API» — готово. Можно запускать.
Аналогично можно конвертировать файлы других форматов.
Надеюсь, что эта заметка сэкономит кому-нибудь время.
Автор: hda1