name google files example python google-drive-sdk google-drive-realtime-api

python - files - Copie el archivo en una carpeta principal específica con la API de Google Drive?



google drive api upload file (1)

¡Ah, ja! La matriz de parents es una lista de objetos con el campo de id .

newfile = {''title'': newtitle, ''parents'' : [ { "id" : parentFolderId } ]} service.files().copy(fileId=originalId, body=newfile).execute()

Lo actualizaré si / cuando descubro cómo configurar permisos también.

Una nota extraña aquí es que el archivo todavía se está copiando a la raíz de la unidad así como a la (s) carpeta (s) primaria (s) que especifico.

Estoy usando Python 2.7 y una cuenta de servicio para copiar un archivo en Google Drive en otra carpeta en función de su título. Esto requiere que ejecute cinco (5!) Comandos:

  1. Encuentra el ID del archivo por título. (lista de files().list )
  2. Buscar el ID de la carpeta principal por título (lista de files().list )
  3. Copiar archivo ( files().copy )
  4. Transferir la propiedad a una cuenta real ( files().insert )
  5. Mover a la carpeta principal. ( parents().insert )

Todo esto funciona, pero me gustaría reducir el número de llamadas y lo primero significa almacenar en caché las ID para no tener que llamar a la lista de files().list . Lo próximo que trato de hacer, y específicamente donde estoy con esta pregunta, es cómo configurar la carpeta principal dentro del comando files().copy . La documentación tiene un parámetro de parents opcional descrito de esta manera:

Colección de carpetas principales que contienen este archivo. Establecer este campo colocará el archivo en todas las carpetas proporcionadas. En la inserción, si no se proporcionan carpetas, el archivo se colocará en la carpeta raíz predeterminada.

Aunque no dice, sé que significa identificación de los padres , ya que es lo que se usa en todos lados. Sin embargo, establecer esta matriz en la biblioteca del cliente no produce un efecto: no hay ningún error y definitivamente el archivo no está en la carpeta correcta.

newfile = {''title'': newtitle, ''parents'' : [ parentFolderId ]} service.files().copy(fileId=originalId, body=newfile).execute()

¿Alguien ha tenido algo de suerte con esto ? ¿Hay algo más que me estoy perdiendo?

Bono: transferir propiedad en comando de copia? ¿Tal vez mi cuenta de servicio podría suplantarme?