2014-01-28 10 views
5

Ich verwende Python 2.7 und service account, um eine Datei in Google Drive basierend auf ihrem Titel in einen anderen Ordner zu kopieren. Dazu muss ich fünf (5!) Befehle ausführen:Datei mit Google Drive API in einen bestimmten übergeordneten Ordner kopieren?

  1. Datei-ID nach Titel suchen. (files().list)
  2. Suche übergeordneten Ordner ID nach Titel (files().list)
  3. Copy-Datei (files().copy)
  4. Übertragung Eigentum an einem realen Konto (files().insert)
  5. Umzug in den übergeordneten Ordner. (parents().insert)

Das alles funktioniert, aber ich möchte die Anzahl der Anrufe reduzieren und erste bedeutet, dass die ID des Cachen also muss ich files().list nicht nennen. Das nächste, was ich versuche zu tun, und speziell, wo ich mit dieser Frage bin, ist, wie Sie den übergeordneten Ordner innerhalb der files().copy Befehl festlegen. Die Dokumentation enthält einen optionalen parents Parameter, der folgendermaßen beschrieben wird:

Sammlung von übergeordneten Ordnern, die diese Datei enthalten. Wenn Sie dieses Feld einstellen, wird die Datei in alle vorgesehenen Ordner eingefügt. Wenn keine Ordner bereitgestellt werden, wird die Datei beim Einfügen in den Standardstammordner gestellt.

Obwohl es nicht sagen, ich weiß, es bedeutet, Eltern IDs denn das ist, was überall sonst verwendet wird. Das Festlegen dieses Arrays in der Client-Bibliothek führt jedoch nicht zu einem Effekt: Kein Fehler und die Datei befindet sich definitiv nicht im richtigen Ordner.

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

Hat jemand with this kein Glück gehabt? Gibt es noch etwas, das mir fehlt?

Bonus: Eigentum im Kopierbefehl übertragen? Vielleicht könnte mein Dienstkonto mich verfälschen?

Antwort

7

Ah ha! Die parents Array ist eine Liste von Objekten mit dem id Feld:

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

ich dieses Update würde, wenn/wenn ich herausfinden, wie auch Berechtigungen festlegen.

Eine seltsame Notiz hier ist, dass die Datei immer noch kopiert wird, um das Laufwerk root sowie die übergeordneten Ordner, die ich angeben.

+0

+1 Guter Fang! Das rettete mich nur vor einigen Problemen :) –

+0

Wenn es Kinderordner gibt, was kann ich tun? –

Verwandte Themen