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

问题描述:

我正在尝试使用Google API NodeJS client将Google Apps脚本上传到我的驱动器。我遵循文档中的指示,但是当文件上传到我的驱动器时,我只能以纯文本格式上传文件,而不能将其作为Apps脚本进行上传。如何通过Google Drive API上载Google Apps脚本(NodeJS)

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等东西。

如果我在media对象改变mimeTypetext/plain其他任何我得到以下(无信息)错误:

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

如何获得驱动承认这是Google Apps脚本并没有任何想法一个纯文本文件?或者这是在NodeJS客户端结束了吗?

+0

看一看在*节点谷歌 - 应用程序 - 脚本'sendToGoogle'功能*,在['upload.js'] (https://github.com/danthareja/node-google-apps-script/blob/master/lib/commands/upload.js)文件。它使用Drive v2,但应该提供一些选项。 – Bardy

+0

@Bardy根据该文件尝试了一堆MIME类型的组合,但仍得到相同的400错误代码。我想我可能需要将其上传为谷歌文档,然后将其转换为谷歌应用程序脚本。我现在要试一试。 – Brodan

所以这显然是一个google-api-nodejs-client的错误,但图书馆的维护人员能够帮助我在文档无法找到的地方。下面将允许你上传.gs文件,谷歌Drive正确:

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) { 
    // ... 
});