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



我正在尝试使用Google API Nodejs客户端将Google 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
  })
})

}

媒体上传读数的部分未指定除了PNG以外的任何其他内容。

如果我将media中的mimeType更改为text/plain以外的任何事物,我会收到以下(无信息)错误:

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

关于如何获取动力以将其识别为应用程序脚本而不是纯文本文件的任何想法?还是在Nodejs客户端的末端破裂?

因此,这显然是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) {
  // ...
});

最新更新