Как создать документ Google Docs с текстом, используя Google Drive JavaScript SDK V3?

Вот это: Веб-приложение. Google Drive JavaScript SDK.

Я пытаюсь создать новый файл на Google Диске в формате, который можно открыть с помощью интерфейса Google Docs.

Сделал oAuth2 успешно. После этого запустите этот код для создания файла:

// Creates file itself
function create(folderId) {
  var fileMetadata = {
    'mimeType': 'application/vnd.google-apps.document',
    'name': 'mrHanky'
  }
  var media = {
    mimeType: 'application/vnd.google-apps.document',
    body: 'Haidee hooowwww i am mr. Hanky!'
  }
  gapi.client.drive.files.create({
    name: 'test_mr_hanky.doc',
    parents: [folderId],
    resource: fileMetadata,
    media: media,
    params: {
      uploadType: 'media'
    },
    body: 'Haidee hooowwww mr. Hanky!',
    fields: 'id'
  }).then(function(result) {
    console.log('File create: ', result)
    save(result.result.id).then(function(result) {
      console.log('File update', result)
    })
  })
}

// Adds content. Perhaps not correct using of sdk, but somehow it half-works
function save(fileId) {
  return gapi.client
    .request({
      path: '/upload/drive/v3/files/' + fileId,
      method: 'PATCH',
      params: {
        uploadType: 'media'
      },
      body: 'mr Hanky after save!'
    })
}

Итак, файл был создан с именем ' test_mr_hanky.doc ' (из функции 'create'), но его нельзя открыть, просто предлагает мне скачать его!

Кстати, я могу открыть его с помощью LibreOffice с текстом: мистер Хэнки, после сохранения! (из функции "сохранить")

Итак, вопрос: как создать настоящий файл Google-Docs на Google-Drive с текстом, который действительно можно открыть с помощью пользовательского интерфейса Google Docs?

Пожалуйста помоги! Действительно, пытаясь получить это уже 3-й день!

Вот ссылки на документы: https://developers.google.com/drive/v3/reference/files/create https://developers.google.com/api-client-library/javascript/reference/referencedocs

1 ответ

Решение

Я думаю, вы почти все поняли правильно.

Вы просто пропустили указание mimetype в Files.create раздел. fileMetadata содержит только сведения о файле, необязательно для файлов mimeType application/vnd.google-apps.document,

gapi.client.drive.files.create({
name: 'test_mr_hanky.doc',
parents: [folderId],
resource: fileMetadata,
media: media,
..

Поэтому добавьте mimeType в эту часть:

gapi.client.drive.files.create({
name: 'test_mr_hanky.doc',
mimeType: 'application/vnd.google-apps.document', //add the mimeType property
.. 

Сделай это, и все готово. Я проверил это на Files.create Try-it, и это работает.

Другие вопросы по тегам