Загрузка презентации Google Slides в виде документа PowerPoint с использованием скрипта Google Apps?
Графический интерфейс Google Slides предлагает загрузить презентацию GSlides в виде Powerpoint (myFile.pptx). Я не смог найти эквивалент в документации по скрипту Google Apps - есть указатель?
РЕДАКТИРОВАТЬ
Благодаря комментариям и ответам, я попробовал этот фрагмент:
function testFileOps() {
// Converts the file named 'Synthese' (which happens to be a Google Slide doc) into a pptx
var files = DriveApp.getFilesByName('Synthese');
var rootFolder = DriveApp.getRootFolder();
while (files.hasNext()) {
var file = files.next();
var blobPptx = file.getBlob().getAs('application/vnd.openxmlformats-officedocument.presentationml.presentation');
var result = rootFolder.createFile(blobPptx);
}
}
Возвращает ошибку:
Преобразование из application/vnd.google-apps.presentation в application/vnd.openxmlformats-officedocument.presentationml.presentation не поддерживается. (строка 7, файл "Код")
ВТОРОЕ РЕДАКТИРОВАНИЕ
Как и в другом предложении в комментариях, я попытался сделать http-вызов из Google App Script, который бы напрямую преобразовывал gslides в pptx без ограничения размера. Он создает файл на G Drive, но этот файл поврежден / не читается. Сценарий ГАЗА:
function convertFileToPptx() {
// Converts a public Google Slide file into a pptx
var rootFolder = DriveApp.getRootFolder();
var response = UrlFetchApp.fetch('https://docs.google.com/presentation/d/1Zc4-yFoUYONXSLleV_IaFRlNk6flRKUuAw8M36VZe-4/export/pptx');
var blobPptx = response.getContent();
var result = rootFolder.createFile('test2.pptx',blobPptx,MimeType.MICROSOFT_POWERPOINT);
}
Заметки:
- Я получил MIME-тип для PPTX здесь
- используя тип пантомимы
'pptx'
возвращает то же сообщение об ошибке
4 ответа
Как насчет этой модификации?
Точка модификации:
response.getContent()
возвращает байтовый массив. Поэтому, пожалуйста, используйтеresponse.getBlob()
,
Модифицированный скрипт:
function convertFileToPptx() {
var fileId = "1Zc4-yFoUYONXSLleV_IaFRlNk6flRKUuAw8M36VZe-4";
var outputFileName = "test2.pptx";
var url = 'https://docs.google.com/presentation/d/' + fileId + '/export/pptx';
var rootFolder = DriveApp.getRootFolder();
var response = UrlFetchApp.fetch(url);
var blobPptx = response.getBlob();
var result = rootFolder.createFile(blobPptx.setName(outputFileName));
}
Замечания:
- Если вы хотите конвертировать слайды Google, которые не были опубликованы, на вашем диске Google, используйте маркер доступа. В это время, пожалуйста, измените
url
следующее.var url = 'https://docs.google.com/presentation/d/' + fileId + '/export/pptx?access_token=' + ScriptApp.getOAuthToken();
DriveApp.createFile()
создает файл в корневой папке по умолчанию.
Рекомендации:
Как упомянуто tehhowch, вы можете получить файл Google Slide с вашего диска и получить его как .pptx
, (Не уверен в типе пантомимы.)
Чтобы получить byte[] выполните:
function downloadAsPPTX(){
var presentation = SlidesApp.getActivePresentation();
var fileId = presentation.getId();
var url = 'https://docs.google.com/presentation/d/' + fileId + '/export/pptx';
var response = UrlFetchApp.fetch(url);
var blobPptx = response.getBlob();
Logger.log("size: "+blobPptx.getBytes().length);
}
Я добавляю все модификации с токеном и конкретной папкой
function convertFileToPptx() {
var fileId = "Your File ID";
var outputFileName = "name.pptx";
var url = 'https://docs.google.com/presentation/d/' + fileId + '/export/pptx';
//var rootFolder = DriveApp.getRootFolder();
var rootFolder = DriveApp.getFolderById("Your Folder ID")
var params = {method:"GET", headers:{"authorization":"Bearer "+ ScriptApp.getOAuthToken()}};
var response = UrlFetchApp.fetch(url,params);
var blobPptx = response.getBlob();
var result = rootFolder.createFile(blobPptx.setName(outputFileName));
}