2014-11-13 4 views
6

Dies ist bereits zuvor im Zusammenhang mit dem Google Drive SDK aufgetreten: How do I get exportLinks for revisions in Google Drive API.Drive PDF-Revisions-IDs werden ignoriert

Mein Problem besteht nicht darin, die exportLinks zu bekommen - nur dass die von der API bereitgestellten nicht funktionieren.

Hier ist eine modifizierte Version des „Auflisten Überarbeitungen“ Beispiel aus der Advanced Drive Service Dokumentation, welche die exportLinks für jede Revision eines bestimmten fileId protokolliert.

function listRevisions(fileId) { 
    var revisions = Drive.Revisions.list(fileId); 
    if (revisions.items && revisions.items.length > 0) { 
    for (var i = 0; i < revisions.items.length; i++) { 
     var revision = revisions.items[i]; 
     var date = new Date(revision.modifiedDate); 
     Logger.log('Date: %s, PDF exportLink: %s', 
      date.toLocaleString(), 
      revision.exportLinks[MimeType.PDF]); 
    } 
    } else { 
    Logger.log('No revisions found.'); 
    } 
} 

Logs

Hier sind Beispielprotokolle für ein Testdokument, das zwei "großen" Revisionen hat. Die Revisionsnummern werden explizit in den exportLinks angegeben.

[14-11-13 16:40:50:511 EST] Date: November 13, 2014 4:35:55 PM EST, 
PDF exportLink: https://docs.google.com/feeds/download/documents/export/Export?id=1V2zkXfyRGh_6gnCXtWlII6sxMQEDcLApRrEk-giIE2s&revision=28&exportFormat=pdf 
[14-11-13 16:40:50:512 EST] Date: November 13, 2014 4:37:51 PM EST, 
PDF exportLink: https://docs.google.com/feeds/download/documents/export/Export?id=1V2zkXfyRGh_6gnCXtWlII6sxMQEDcLApRrEk-giIE2s&revision=32&exportFormat=pdf 

So weit, so gut. Nur dass diese Links die SAME-Version des Dokuments öffnen ... das Neueste. (Gehen Sie voran, versuchen Sie sie - das Dokument ist öffentlich.)

Frage: Gibt es irgendein Format von ExportLinks, das die spezifizierten Revisionen wirklich herunterlädt? (d. h. vielleicht sollte der Parameter 'revision' etwas anderes genannt werden)

+0

Sieht aus wie ein Fehler im PDF-Format Export von Revisionen - die beantragte Revision-ID wird ignoriert und nur die neueste Version (Kopf) wird exportiert, unabhängig davon, welches Revision-ID in der URL angegeben wird. Alle anderen Exportformate (html, odt, docx, txt, rtf) exportieren die korrekte Version - nur PDF ist falsch. Hoffentlich bemerkt einer der Google-Techniker, die den Google-drive-sdk-Tag hier überwachen (laut [Drive SDK Support-Seite] (https://developers.google.com/drive/support)), Ihre Frage! – azawaza

+0

@azawaza: guter Punkt! Ich habe den Titel aktualisiert, um mich auf PDF zu konzentrieren. Es stellt fest, dass PDF war das einzige, was mich interessiert! – Mogsdad

Antwort

7

Die Google-Ingenieure haben das Problem mit dem unten gezeigten Code reproduziert und einen internen Fehlerbericht dazu erstellt. Der Beispielcode befindet sich zwar in Google Apps Script, das Problem liegt jedoch in Google Drive.

Sie können jeden Fortschritt verfolgen, indem Sie Issue 4008 auf dem Issue Tracker besuchen.

function test() { 
    var content = Utilities.newBlob('Apple', 'text/plain'); 
    var file = { 
    title: 'Test Document' 
    }; 
    file = Drive.Files.insert(file, content, { 
    convert: true 
    }); 

    var doc = DocumentApp.openById(file.id); 
    doc.getBody().appendParagraph('Banana'); 
    doc.saveAndClose(); 

    var oauthToken = ScriptApp.getOAuthToken(); 

    var revisions = Drive.Revisions.list(file.id).items; 
    revisions.forEach(function(revision) { 
    // revision = revisions[]; 
    Object.keys(revision.exportLinks).forEach(function(mimeType) { 
     var link = revision.exportLinks[mimeType]; 
     var response = UrlFetchApp.fetch(link, { 
     headers: { 
      Authorization: 'Bearer ' + oauthToken 
     } 
     }); 
     var blob = response.getBlob(); 
     var parts = blob.getName().split('.'); 
     blob.setName(parts[0] + '-' + revision.id + '.' + parts[1]); 
     DriveApp.createFile(blob); 
    }); 
    }); 
} 
Verwandte Themen