如何通过Google Drive API(NodeJS)上传Google Apps脚本

时间:2016-12-04 20:32:03

标签: javascript node.js google-apps-script google-drive-api google-docs

我正在尝试使用Google API NodeJS client将Google Apps脚本上传到我的驱动器。我按照文档中的说明进行操作,但是当文件上传到我的驱动器时,我只能将其作为纯文本而不是Apps脚本上传。

function uploadAppScript(auth) {
return new Promise(function(resolve, reject) {
  var drive = google.drive('v3')
  drive.files.create({
    auth: auth,
    resource: {
      name: 'myscript',
      mimeType: 'application/vnd.google-apps.script'
    },
    media: {
      mimeType: 'text/plain',
      body: fs.createReadStream('src/myscript.gs') 
    },
  }, function(err, result){
       ... //not relevant
  })
})

}

自述文件的media uploads部分未指定如何上传png以外的任何内容。

如果我将mimeType对象中的media更改为除text/plain以外的任何内容,则会收到以下(无法提供信息)错误:

code: 400,
  errors: 
    [ { domain: 'global',
        reason: 'badRequest',
        message: 'Bad Request' } ] }

有关如何让Drive将其识别为Apps脚本而非纯文本文件的任何想法?或者这是NodeJS客户端的结果吗?

1 个答案:

答案 0 :(得分:0)

所以这显然是google-api-nodejs-client的一个错误,但是图书馆的维护者能够在文档无法帮助的地方帮助我。您可以通过以下方式将.gs文件正确上传到Google云端硬盘:

drive.files.create({
  resource: {
    name: 'myscript.gs',
    mimeType: 'application/vnd.google-apps.script+json'
  },
  media: {
    mimeType: 'application/vnd.google-apps.script+json',
    body: JSON.stringify({
      files: [
        {
          source: fs.readFileSync('src/myscript.gs', { encoding: 'utf-8' }),
          name: 'myscript',
          type: 'server_js'
        }
      ]
    })
  }
}, function (err, file) {
  // ...
});