Hochladen auf ein freigegebenes Laufwerk mit Google Drive API V3

Aus irgendeinem Grund wurde der Fehler im übergeordneten Ordner 404 nicht gefunden

Es ist eine Geschichte, wenn Sie ein freigegebenes Laufwerk mit Google Drive API V3 verwenden, da es trotz der starken Abhängigkeit nur wenige Informationen gab. Wenn ich versuche, eine Datei in einen Ordner auf dem freigegebenen Laufwerk hochzuladen und sie durch Angabe der ID des übergeordneten Ordners in "meta.Parents" zu verschieben, wird aus irgendeinem Grund der Fehler "Datei nicht gefunden [Ordner-ID] 404" angezeigt ... ・ Wenn Sie in MyDrive eine Ordner-ID angeben, bei der es sich nicht um ein freigegebenes Laufwerk handelt, ist dies erfolgreich. Daher scheint es kein Problem mit der Authentifizierung und dem Programmablauf zu geben.

Das Hochladen eines freigegebenen Laufwerks ist mühsam

Plötzlich musste ich die folgenden zwei Eigenschaften einstellen. Die DriveId-Eigenschaft des --meta-Objekts

DriveId wird auch von der URL kopiert

Wie die ID des übergeordneten Ordners ist DriveId die letzte Zeichenfolge der URL, wenn das Stammverzeichnis des entsprechenden freigegebenen Laufwerks im Browser geöffnet wird. Es gibt auch eine Eigenschaft namens "TeamDriveId", aber Sie können DriveId anstelle von "Veraltet" verwenden.

Komplett

Der Gesamtcode einschließlich Authentifizierung lautet jetzt ↓. Es ist fast eine Beispielkopie von Quick Start. (Der Code lautet C # SDK, andere SDKs sind jedoch identisch.)

GoogleDriveUploader.cs


string[] Scopes = { DriveService.Scope.DriveFile }; //DriveFile zum Hochladen
string ApplicationName = "Passender Anwendungsname";

UserCredential credential;

using (var stream = new FileStream("client_secret_~~.apps.googleusercontent.com.json", FileMode.Open, FileAccess.Read))
{
    string credPath = "token.json";
    credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
        GoogleClientSecrets.Load(stream).Secrets,
        Scopes,
        "user",
        CancellationToken.None,
        new FileDataStore(credPath, true)).Result;
    Console.WriteLine("Credential file saved to: " + credPath);
}

// Create Drive API service.
var service = new DriveService(new BaseClientService.Initializer()
{
    HttpClientInitializer = credential,
    ApplicationName = ApplicationName,
});

var meta = new Google.Apis.Drive.v3.Data.File()
{
    Name = "Zu erstellende Datei",
    MimeType = "application/octet-stream", //Lassen Sie uns entsprechend einstellen
    DriveId = "ID des freigegebenen Laufwerks(Wie 0ABcDeJiHiJKLmn23)",
    Parents = new List<string> { "ID des übergeordneten Ordners(Wie 1auYhd9J9j ~)" }
};

using (var stream = new System.IO.FileStream("Vollständiger Pfad der hochzuladenden Datei", System.IO.FileMode.Open))
{
    //Neuer Zusatz
    var request = service.Files.Create(meta, stream, meta.MimeType);
    request.Fields = "id, name";
    request.SupportsAllDrives = true;
    var ret = request.UploadAsync().Result;

    if (ret.Status == Google.Apis.Upload.UploadStatus.Failed)
    {
        throw ret.Exception;
    }
}

Recommended Posts

Hochladen auf ein freigegebenes Laufwerk mit Google Drive API V3
Laden Sie Bilder mit Python auf Google Drive hoch
Laden Sie Dateien mit Lambda (Python) auf Google Drive hoch.
Hochladen auf ein freigegebenes Laufwerk mit pydrive
Bis wir einen Mechanismus zum Hochladen von Dateien, die für Slack freigegeben wurden, ohne Server auf Google Drive erstellt haben
So suchen Sie in Google Colaboratory nach Google Drive
Laden Sie eine JPG-Datei mit der Google Drive-API in Python hoch
Erstellen Sie eine Tweet-Heatmap mit der Google Maps-API
Laden Sie eine Datei in Dropbox hoch
Hängen Sie Google Drive mit google-drive-ocamlfuse ein
Greifen Sie mit Python auf Google Drive zu
Google Drive API-Tipps (Python)
Senden Sie eine Nachricht an Google Hangouts Chat mit einem Thread (Python)
Laden Sie Dateien mit Django-Speicher in Google Cloud Storages hoch und löschen Sie sie
Spielen Sie mit der YouTube Data API v3 mit dem Google API Python Client
Rubyist hat versucht, eine einfache API mit Python + Flasche + MySQL zu erstellen
Eine Geschichte über das Hinzufügen einer REST-API zu einem mit Python erstellten Daemon
Ich habe versucht, die Google-API mit Ruby und Python zu erreichen. Machen Sie die Datenbank zu einer Tabelle und verwalten Sie sie mit Google Drive
Hochladen und Herunterladen von Bildern in Azure Storage. Mit Python + Anfragen + REST API
So senden Sie eine Anfrage mit Python an die DMM (FANZA) -API
Versuchen Sie, einen Artikel von Qiita mit der REST-API [Umweltvorbereitung] zu erstellen.
Einführung der Google Map API mit Schienen
Erstellen Sie eine REST-API, um dynamodb mit dem Django REST Framework zu betreiben
So erstellen Sie mit AWS Lambda eine serverlose API für maschinelles Lernen
Ich habe versucht, "Sakurai-san" LINE BOT mit API Gateway + Lambda zu erstellen
Senden Sie Daten mit Vue.js an die DRF-API
Erstellen Sie einen Kaskadenklassifizierer mit Google Colaboratory
[IOS] Verwenden Sie gemeinsam genutzte Blätter mit Pythonista3.
[V11 ~] Ein Memorandum für Misskey
Ich habe eine Web-API erstellt
Holen Sie sich Urlaub mit der Google Kalender-API
Ich habe ein Tool zum Korrigieren von GPS-Daten mit der Map Matching API von Mapbox (Mapbox Map Matching API) erstellt.
So legen Sie Google Text & Tabellen in einem Ordner zusammen in einer TXT-Datei mit Python ab
Holen Sie sich eine Liste der Artikel, die von Benutzern mit Python 3 Qiita API v2 veröffentlicht wurden
Ich habe eine Burgsuch-API mit Elasticsearch + Sudachi + Go + Echo erstellt
Ich habe versucht, eine einfache Bilderkennungs-API mit Fast API und Tensorflow zu erstellen
So zeigen Sie eine Karte mit der Google Map API (Android) an
Hochladen mit Heroku, Flask, Python, Git (4)
Lesen einer CSV-Datei mit Python 2/3
Senden Sie eine Nachricht mit Python an LINE (LINE Notify)
So senden Sie eine Nachricht mit Curl an LINE
Laden Sie eine große Anzahl von Bildern in Wordpress hoch
So zeichnen Sie ein 2-Achsen-Diagramm mit Pyplot
Richten Sie einen lokalen Server mit Go-File-Upload ein.
Ich habe "License OCR" mit der Google Vision API ausprobiert
Zeigen Sie die Google Maps-API mit Rails und Pin-Anzeige an
So entwickeln Sie eine Cart-App mit Django
Führen Sie die Google Analytics-API (Core v3) in Python aus
Versuchen Sie, mit Python eine Lebenskurve zu zeichnen
Ich möchte ein Spiel mit Python machen
Automatische Sprachtranskription mit Google Cloud Speech API
Versuchen Sie, in Python einen "Entschlüsselungs" -Code zu erstellen
Verwendung der Google Cloud Translation API
Spielen Sie den Server mit zwei PCs
Versuchen Sie eine lockere OAuth-Authentifizierung mit einem Kolben (Slack API V2).