En esta guía, se explica cómo crear y administrar archivos en Google Drive con la API de Google Drive.
Crear archivo
Para crear un archivo en Drive que contenga contenido (multimedia), debes subir datos de archivos. Puedes subir los metadatos y el contenido de un archivo juntos en una sola solicitud (carga multiparte) o subir solo contenido multimedia (carga simple). Para obtener más información, consulta Cómo subir datos de archivos.
Para crear un archivo que no contenga metadatos ni contenido, usa el create método en el files recurso sin parámetros.
Cuando creas el archivo, el método muestra un recurso files. El archivo recibe un kind de drive.file, un id, un name de "Sin título" y un mimeType de application/octet-stream. El
uploadType
se marca como obligatorio, pero el valor predeterminado es media, por lo que no es necesario que lo
proporciones.
Para obtener más información sobre los límites de archivos de Drive, consulta Límites de archivos y carpetas.
En los siguientes ejemplos de código, se muestra cómo crear un archivo sin metadatos ni contenido:
Node.js
/**
* Create an empty file.
* @return {string} The created file's ID.
*/
async function createEmptyFile() {
// Get credentials and build service
// TODO(developer): Use appropriate auth mechanism for your app
const {GoogleAuth} = require('google-auth-library');
const {google} = require('googleapis');
const auth = new GoogleAuth({scopes: 'https://www.googleapis.com/auth/drive'});
const service = google.drive({version: 'v3', auth});
try {
const response = await service.files.create({});
console.log('File ID: ' + response.data.id);
return response.data.id;
} catch (err) {
// TODO(developer): Handle error
console.error(err);
}
}
curl
curl -X POST 'https://www.googleapis.com/drive/v3/files' \
-H 'Authorization: Bearer ACCESS_TOKEN'
Reemplaza lo siguiente:
- ACCESS_TOKEN: Es el token de OAuth 2.0 de tu app.
Usa el parámetro fields
Si deseas especificar los campos que se mostrarán en la respuesta, puedes configurar el
fields parámetro
del sistema
con cualquier método del recurso files. Si omites el parámetro fields, el servidor muestra un conjunto predeterminado de campos específicos del método. Por ejemplo, el
list método muestra solo los campos kind, id,
name, mimeType y resourceKey para cada archivo. Para mostrar diferentes
campos, consulta Cómo mostrar campos específicos.
Propiedad de archivos
Cuando se crea un archivo con la API de Drive, la propiedad depende de las credenciales de autenticación que usa la app de las siguientes maneras:
Cuenta de usuario (OAuth 2.0): Si la aplicación se autentica en nombre de un usuario, ese usuario se convierte en el propietario del archivo. Luego, el archivo reside en su carpeta Mi unidad o en una carpeta especificada. Consume su cuota de almacenamiento.
Cuenta de servicio: Si la aplicación se autentica con una cuenta de servicio, la cuenta de servicio es el propietario del archivo. Luego, el archivo reside en el almacenamiento en Drive dedicado de la cuenta de servicio. Los archivos no aparecen en otras cuentas de almacenamiento en Drive, a menos que se compartan de forma explícita. Si se borra la cuenta de servicio, se borran de inmediato todos los archivos que posee.
Si usas una cuenta de servicio, pero quieres que una cuenta de usuario específica sea propietaria de un archivo, usa la delegación en todo el dominio. Esto permite que la cuenta de servicio suplante a un usuario y cree archivos en su nombre. Para obtener más información, consulta Cómo delegar autoridad en todo el dominio a la cuenta de servicio.
Para obtener más información sobre los permisos de archivos, consulta Cómo compartir archivos, carpetas y unidades.
Genera IDs para usar con tus archivos
El método generateIds en el recurso
files te permite generar previamente IDs de archivo
únicos que se pueden usar cuando creas o copias archivos y carpetas en
Drive. Esto puede ser útil cuando necesitas controlar los IDs de archivos desde tu app, en lugar de permitir que Drive los asigne automáticamente.
Puedes configurar la cantidad de IDs generados con el
count
parámetro de consulta. Si no se configura count, se muestran 10 de forma predeterminada. La cantidad máxima de IDs que puedes solicitar es de 1,000.
También puedes designar el
space en
el que se pueden usar los IDs y el
type de
elementos para los que se pueden usar los IDs.
Una vez que se genera un ID, se puede pasar al método create o copy a través del campo id. Esto garantiza que el archivo creado o copiado use el ID predeterminado.
Si el archivo se crea o copia correctamente, los reintentos posteriores muestran una respuesta de código de estado HTTP 409
Conflict y no se crean archivos duplicados.
Ten en cuenta que no se admiten IDs generados previamente para la creación de
archivos de Google Workspace, excepto para los application/vnd.google-apps.drive-sdk
y application/vnd.google-apps.folder tipos
de MIME. Del mismo modo, no se admiten las cargas que hacen referencia a una conversión a un formato de archivo de Google Workspace.
En los siguientes ejemplos de código, se muestra cómo generar previamente IDs de archivos únicos:
Node.js
/**
* Pre-generate unique file IDs.
*/
async function generateFileIds() {
// Get credentials and build service
// TODO(developer): Use appropriate auth mechanism for your app
const {GoogleAuth} = require('google-auth-library');
const {google} = require('googleapis');
const auth = new GoogleAuth({scopes: 'https://www.googleapis.com/auth/drive'});
const service = google.drive({version: 'v3', auth});
try {
const response = await service.files.generateIds({
count: 10,
space: 'drive'
});
const ids = response.data.ids;
console.log('Generated IDs:');
for (const id of ids) {
console.log(id);
}
} catch (err) {
// TODO(developer): Handle error
console.error(err);
}
}
curl
curl 'https://www.googleapis.com/drive/v3/files/generateIds?count=10&space=drive' \
-H 'Authorization: Bearer ACCESS_TOKEN'
Reemplaza lo siguiente:
- ACCESS_TOKEN: Es el token de OAuth 2.0 de tu app.
Crea archivos solo de metadatos
Los archivos solo de metadatos no contienen contenido. Los metadatos son datos (como name, mimeType y createdTime) que describen el archivo. Los campos como name son independientes del usuario y aparecen de la misma manera para cada usuario, mientras que los campos como viewedByMeTime contienen valores específicos del usuario.
Un ejemplo de un archivo solo de metadatos es una carpeta con el tipo de MIME application/vnd.google-apps.folder. Para obtener más información, consulta Cómo crear y
completar carpetas. Otro ejemplo es un acceso directo que apunta a otro archivo en Drive con el tipo de MIME application/vnd.google-apps.shortcut. Para obtener más información, consulta Cómo crear un
acceso directo a un archivo de Drive.
Administra imágenes en miniatura
Las miniaturas ayudan a los usuarios a identificar archivos de Drive. Drive puede generar automáticamente miniaturas para tipos de archivos comunes o puedes proporcionar una imagen en miniatura generada por tu app. Para obtener más información, consulta Cómo subir miniaturas.
Copia un archivo existente
Para copiar un archivo y aplicar las actualizaciones solicitadas, usa el copy método en el files recurso. Para encontrar el
fileId que se copiará, usa el list método.
Puedes aplicar actualizaciones a través de la semántica de parches, lo que significa que puedes realizar modificaciones parciales en un recurso. Debes configurar de forma explícita los campos que deseas modificar en tu solicitud. Los campos que no se incluyan en la solicitud conservarán sus valores existentes. Para obtener más información, consulta Cómo trabajar con recursos parciales.
Puedes preestablecer el ID de archivo del archivo copiado con el generateIds método. Para obtener más información, consulta
Genera IDs para usar con tus archivos.
Ten en cuenta que debes usar un alcance adecuado de la API de Drive scope para autorizar la llamada. Para obtener más información sobre los alcances de Drive, consulta Elige alcances de la API de Google Drive.
En los siguientes ejemplos de código, se muestra cómo copiar un archivo y actualizar su nombre:
Node.js
/**
* Copy an existing file.
* @return {string} The copied file's ID.
*/
async function copyFile() {
// Get credentials and build service
// TODO(developer): Use appropriate auth mechanism for your app
const {GoogleAuth} = require('google-auth-library');
const {google} = require('googleapis');
const auth = new GoogleAuth({scopes: 'https://www.googleapis.com/auth/drive'});
const service = google.drive({version: 'v3', auth});
try {
const response = await service.files.copy({
fileId: 'FILE_ID',
requestBody: {
name: 'FILE_COPY_NAME'
}
});
console.log('Copied file ID: ' + response.data.id);
return response.data.id;
} catch (err) {
// TODO(developer): Handle error
console.error(err);
}
}
Reemplaza lo siguiente:
- FILE_ID: Es el ID del archivo que se copiará.
- FILE_COPY_NAME: Es el nombre del archivo nuevo.
curl
curl -X POST 'https://www.googleapis.com/drive/v3/files/FILE_ID/copy' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"name": "FILE_COPY_NAME"
}'
Reemplaza lo siguiente:
- FILE_ID: Es el ID del archivo que se copiará.
- ACCESS_TOKEN: Es el token de OAuth 2.0 de tu app.
- FILE_COPY_NAME: Es el nombre del archivo nuevo.
Copiar comentarios
Para copiar comentarios y sugerencias cuando copias un archivo de Documentos,
Hojas de cálculo o Presentaciones de Google, configura el copyComments parámetro
de consulta como true. Drive solo copia los comentarios abiertos (comentarios no resueltos). Para otros tipos de archivos, Drive ignora este parámetro.
Para obtener más información sobre los permisos, la atribución de comentarios y las consideraciones de acceso , consulta Límites y consideraciones.
Límites y consideraciones
Mientras te preparas para copiar archivos, ten en cuenta estos límites y consideraciones:
Permisos:
- El
DownloadRestrictionsMetadataobjeto del recursofilesdetermina quién puede copiar el archivo. Para obtener más información, consulta Cómo evitar que los usuarios descarguen, impriman o copien tu archivo. - El recurso de campo
capabilities.canCopydetermina si el usuario puede copiar un archivo. Para obtener más información, consulta Comprende las capacidades de los archivos. - Para copiar comentarios, debes tener permiso para leer comentarios en el archivo de origen. Si no tienes permiso para leer comentarios y configuras
copyCommentscomotrue, la operación de copia se realiza correctamente, pero no se copian los comentarios. - Copiar comentarios no otorga a los autores de comentarios originales acceso al archivo nuevo. Las listas de control de acceso (LCA) del archivo nuevo son independientes de las LCA del archivo de origen.
- El usuario que creó la copia es el propietario del archivo copiado. No se replican otros parámetros de configuración de uso compartido del archivo de origen. Si la copia se crea en una carpeta compartida, hereda los permisos de esa carpeta.
- La propiedad de un archivo copiado puede cambiar, y es posible que la copia no herede la configuración de uso compartido del archivo original. Es posible que debas restablecer esta configuración.
- El
Administración de archivos:
- Algunos archivos, como los accesos directos de terceros, nunca se pueden copiar.
- Solo puedes copiar un archivo en una carpeta superior. No se admite la especificación de varios superiores. Si no se especifica el campo
parents, el archivo hereda cualquier superior detectable del archivo de origen. - Aunque una carpeta es un tipo de archivo, no puedes copiarla.
En su lugar, crea una carpeta de destino y configura el campo
parentsde los archivos existentes en la carpeta de destino. Luego, puedes borrar la carpeta de origen original. - A menos que se especifique un nombre de archivo nuevo, el método
copyproduce un archivo con el mismo nombre que el original. - El uso excesivo de
copypuede provocar que se superen los límites de cuota de la API de Drive. Para obtener más información, consulta Límites de uso.
Temas relacionados
Estos son algunos pasos siguientes que puedes probar:
Para subir datos de archivos cuando creas o actualizas un archivo, consulta Subir datos de archivos.
Para crear un archivo en una carpeta específica, consulta Cómo crear un archivo en una carpeta específica.
Para mover archivos, consulta Cómo mover archivos entre carpetas.
Para trabajar con metadatos de archivos, consulta Cómo administrar metadatos de archivos.
Para borrar un archivo, consulta Cómo enviar archivos y carpetas a la papelera o borrarlos.