Как преобразовать уже загруженный файл Excel в формат электронной таблицы Google?

Мне нужно преобразовать файлы Excel, уже загруженные на Google Диск, в формат электронной таблицы Google. Как лучше всего это сделать программно?

Я нашел это сообщение (#15 ), но я не могу понять, как использовать этот код. И, похоже, он предназначен для файлов Excel, еще не хранящихся на Диске. Загружать его снова было бы лишним.


person Cutter    schedule 01.05.2014    source источник


Ответы (3)


К сожалению, вы не можете преобразовать файл на месте, и вам нужно будет повторно загрузить его. Вот пример, показывающий, как использовать файл XLSX, который уже находится на вашем диске:

function convert(xlsxFileId) { 
  var xlsxBlob = DriveApp.getFileById(xlsxFileId).getBlob();
  var file = {
    title: 'Converted Spreadsheet'
  };
  file = Drive.Files.insert(file, xlsxBlob, {
    convert: true
  });
}
person Eric Koleda    schedule 01.05.2014
comment
Это работает, спасибо! Но можете ли вы объяснить использование метода insert? Это тот же метод, который описан здесь? Почему там не описаны используемые вами параметры? - person Cutter; 01.05.2014
comment
Да, это тот же метод. Сценарий приложений упорядочивает параметры несколько иначе, а именно: ресурс, обязательные аргументы, медиаданные, необязательные аргументы. - person Eric Koleda; 01.05.2014
comment
По какой-то причине этот код больше не работает... Сгенерированный файл представляет собой пустой XLS-файл размером 0 байт. У меня все еще включен Drive API. Но в журнале выполнения скрипта есть такая строка: [14-05-01 23:55:30:289 CEST] File.getBlob() [0 secondes] Очевидно, что метод getBlob() больше не работает. Как я могу устранить эту проблему? - person Cutter; 02.05.2014
comment
... и он снова работает (я не менял ни код, ни содержимое моего диска). Любая идея, что могло вызвать проблему? - person Cutter; 02.05.2014

Для тех, кто наткнулся на это: это возможно как в Drive API v2, так и в v3. Пример Python:

API v2:

drive_service_v2.files().copy(body=body, fileId="0n3xrtmjFpuG3V1g3h24tVHM2a33", convert="true").execute()

API v3:

new_mime_type = "application/vnd.google-apps.spreadsheet"
file_id_of_Excel_file = "0n3xrtmjFpuG3V1g3h24tVHM2a33"
body = {'name': 'New File Name', 'mimeType': new_mime_type}        
drive_service.files().copy(body=body, fileId=file_id_of_Excel_file).execute()
person parapet    schedule 15.04.2017
comment
Спасибо тебе за это! Супер полезно для Python, и это именно то, что мне было нужно, чтобы двигаться вперед. - person erekalper; 16.10.2018

В API Google Driver V3 нужно просто установить MimeType.

File file = new File();

file.MimeType = "application/vnd.google-apps.spreadsheet"
person Paul Xia    schedule 02.03.2017