如何使用Google Drive JavaScript SDK V3创建包含文字的Google文档文档?

时间:2016-11-02 19:03:14

标签: google-drive-api

这是:Web应用程序。 Google Drive JavaScript SDK。

我尝试在Google云端硬盘中使用格式创建新文件,可以使用Google文档用户界面打开。

成功完成了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 ”(来自“创建”功能),但无法打开,只是建议我下载它!

BTW localy我可以用LibreOffice用文本打开它: mank Hanky先保存!(来自函数'save')

所以,问题是:如何使用文字在Google-Drive上创建真实的Google-Docs文件,这可以通过Google文档用户界面真正打开?

请帮忙!真的,试着已经第3天了!

以下是文档的链接: https://developers.google.com/drive/v3/reference/files/create https://developers.google.com/api-client-library/javascript/reference/referencedocs#gapiclientrequestargs

1 个答案:

答案 0 :(得分:0)

我认为你几乎把一切都搞定了。

您错过了在Files.create部分中指定mimetype。 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上对此进行了测试,结果正常。