Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

395
Vistas
Use la API de Google Drive para almacenar datos de aplicaciones

Estoy tratando de almacenar un objeto json que contiene información de configuración en un archivo de datos de aplicación de Google Drive. Actualmente estoy escribiendo la aplicación en JS que se ejecuta en el lado del cliente . Usando la API de Google Drive, actualmente puedo buscar el archivo en la carpeta appdata. ¿Cómo haría para generar un nuevo archivo y almacenarlo en la carpeta appdata si no se encuentra la configuración?

 var request = gapi.client.drive.files.list({ 'q': '\'appdata\' in parents' }); request.execute(function(resp) { for (i in resp.items) { if(resp.items[i].title == FILENAME) { fileId = resp.items[i].id; readFile(); //Function to read file return; } } //Create the new file if not found });
about 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

El cliente gapi no proporciona un método para cargar archivos en Google Drive (lo hace para metadatos), pero aún exponen un punto final de API. Aquí hay un ejemplo que he estado usando para la API V3

 function saveFile(file, fileName, callback) { var file = new Blob([JSON.stringify(file)], {type: 'application/json'}); var metadata = { 'name': fileName, // Filename at Google Drive 'mimeType': 'application/json', // mimeType at Google Drive 'parents': ['appDataFolder'], // Folder ID at Google Drive }; var accessToken = gapi.auth.getToken().access_token; // Here gapi is used for retrieving the access token. var form = new FormData(); form.append('metadata', new Blob([JSON.stringify(metadata)], {type: 'application/json'})); form.append('file', file); var xhr = new XMLHttpRequest(); xhr.open('post', 'https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart&fields=id'); xhr.setRequestHeader('Authorization', 'Bearer ' + accessToken); xhr.responseType = 'json'; xhr.onload = () => { console.log(xhr.response.id); // Retrieve uploaded file ID. callback(xhr.response); }; xhr.send(form); }

Y dado que Google Drive permitirá nombres de archivo duplicados ya que son únicos por ID, uso algo como esto para verificar si ya existe:

 function fileExists(file, fileName){ var request = gapi.client.drive.files.list({ spaces: 'appDataFolder', fields: 'files(id, name, modifiedTime)' }); request.execute(function(res){ var exists = res.files.filter(function(f){ return f.name.toLowerCase() === fileName.toLowerCase(); }).length > 0; if(!exists){ saveFile(file, fileName, function(newFileId){ //Do something with the result }) } }) }
about 4 years ago · Santiago Trujillo Denunciar

0

Consulte la documentación sobre el almacenamiento de datos de la aplicación :

La 'Carpeta de datos de la aplicación' es una carpeta especial a la que solo puede acceder su aplicación. Su contenido está oculto para el usuario y para otras aplicaciones. A pesar de estar oculta para el usuario, la carpeta de datos de la aplicación se almacena en la unidad del usuario y, por lo tanto, utiliza la cuota de almacenamiento de la unidad del usuario. La carpeta Datos de la aplicación se puede utilizar para almacenar archivos de configuración, datos de juegos guardados o cualquier otro tipo de archivo con el que el usuario no deba interactuar directamente.

NOTA:

Para poder utilizar su carpeta de datos de la aplicación, solicite acceso al siguiente ámbito:

 https://www.googleapis.com/auth/drive.appdata

Si revisa el código de muestra sobre cómo insertar un archivo en la carpeta de datos de la aplicación (código PHP):

 $fileMetadata = new Google_Service_Drive_DriveFile(array( 'name' => 'config.json', 'parents' => array('appDataFolder') )); $content = file_get_contents('files/config.json'); $file = $driveService->files->create($fileMetadata, array( 'data' => $content, 'mimeType' => 'application/json', 'uploadType' => 'multipart', 'fields' => 'id')); printf("File ID: %s\n", $file->id);

Al agregar appDataFolder como padre para el archivo, se escribirá en appFolder. Luego implemente su propio código de carga/cody para insertar el archivo y su contenido en appFolder.

Espero que esto ayude

about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda