Como criar uma pasta no Google Drive usando javascript
-
12-12-2019 - |
Pergunta
No momento estou usando este código para fazer upload de arquivos para o Google Drive:https://stackoverflow.com/a/11657773/1715263Funciona bem com um arquivo de texto.
Com o mesmo código estou tentando criar uma pasta, usando essas informações do Google:https://developers.google.com/drive/folder
então o Google diz "Tipo de conteúdo:application/json" vai para o cabeçalho e "application/vnd.google-apps.folder" deve ser o tipo MIME no corpo (?), é isso que estou fazendo no meu código, que se parece com isto agora:
function createFolder()
{
var access_token = googleAuth.getAccessToken();
var json = JSON.stringify({
mimeType: 'application/vnd.google-apps.folder',
title: 'Folder',
});
var body = "Content-Type: application/json" + "\r\n" +
"Content-Length: " + json.length + "\r\n" + "\r\n" +
json;
gapi.client.request({
'path': '/upload/drive/v2/files/',
'method': 'POST',
'params': {'uploadType': 'multipart'},
'headers': {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + access_token,
},
'body': body
}).execute(function(file) {
document.getElementById("info").innerHTML = "Created folder: " + file;
});
Mas é apenas criar um arquivo chamado "Sem título", não é uma pasta e você não pode abri-lo.
Quando altero o "Tipo de conteúdo" na seção "cabeçalhos" para "application/vnd.google-apps.folder" e removo a parte "corpo", estou criando uma pasta chamada "Sem título".
Como posso criar uma pasta com um título específico?
Solução
Finalmente consegui funcionar pesquisando no Google o código de Claudios, o que me levou a este trecho de código: https://stackoverflow.com/a/11361392/1715263
O importante que mudou foi o 'caminho', agora é "/drive/v2/files/" em vez de "/upload/drive/v2/files/".Acabei de remover a função 'gapi.client.load', adicionei informações de cabeçalhos e alterei o mimeType do corpo.
Então aqui está o código:
function createFolder() {
var access_token = googleAuth.getAccessToken();
var request = gapi.client.request({
'path': '/drive/v2/files/',
'method': 'POST',
'headers': {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + access_token,
},
'body':{
"title" : "Folder",
"mimeType" : "application/vnd.google-apps.folder",
}
});
request.execute(function(resp) {
console.log(resp);
document.getElementById("info").innerHTML = "Created folder: " + resp.title;
});
}
Outras dicas
Experimente o seguinte código:
function createFolder(folderName) {
var body = {
'title': folderName,
'mimeType': "application/vnd.google-apps.folder"
};
var request = gapi.client.drive.files.insert({
'resource': body
});
request.execute(function(resp) {
console.log('Folder ID: ' + resp.id);
});
}