如何通过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
对象改变mimeType
比text/plain
其他任何我得到以下(无信息)错误:
code: 400,
errors:
[ { domain: 'global',
reason: 'badRequest',
message: 'Bad Request' } ] }
如何获得驱动承认这是Google Apps脚本并没有任何想法一个纯文本文件?或者这是在NodeJS客户端结束了吗?
答
所以这显然是一个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) {
// ...
});
看一看在*节点谷歌 - 应用程序 - 脚本'sendToGoogle'功能*,在['upload.js'] (https://github.com/danthareja/node-google-apps-script/blob/master/lib/commands/upload.js)文件。它使用Drive v2,但应该提供一些选项。 – Bardy
@Bardy根据该文件尝试了一堆MIME类型的组合,但仍得到相同的400错误代码。我想我可能需要将其上传为谷歌文档,然后将其转换为谷歌应用程序脚本。我现在要试一试。 – Brodan