我正在尝试使用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客户端的结果吗?
答案 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) {
// ...
});