2014-11-13 30 views
6

Bu, Google Drive SDK'sı ile ilgili olarak daha önce görüntülendi: How do I get exportLinks for revisions in Google Drive API.Sürücü PDF'leri revizyonu gerçekleştiriliyor.

Sorunum, exportLink'leri almıyor - yalnızca API tarafından sağlananlar işe yaramıyor.

Burada verilen fileId her revizyon için exportLinks kaydeder Advanced Drive Service dokümantasyon, gelen "Düzeltmeleri Liste" Örneğin değiştirilmiş versiyonu.

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.'); 
    } 
} 

Kayıtları Burada

iki "büyük" revizyonları bir test belgesi için örnek kayıtları. Revizyon numaraları, exportLinks'ta açıkça belirtilmiştir.

[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 

Şimdiye kadar çok iyi. Bu bağlantıların dışında, belgenin SAME sürümünü ... en son. (Devam edin, bunları deneyin - belge herkese açıktır.)

Soru: Belirtilen düzeltmeleri gerçekte karşıdan yükleyen bazı exportLinks formatları var mı? (yani belki 'revizyon' parametresi başka bir şey adlandırılmış olmalıdır)

+0

revizyonlar PDF formatında ihracat bir böcek gibi görünüyor - istenen düzeltme kimliği göz ardı ediliyor ve sadece en son revizyon (baş) olursa olsun url belirtilen adla düzeltme kimliği, ihraç edilmektedir. Diğer tüm dışa aktarma formatları (html, odt, docx, txt, rtf) doğru düzeltmeyi dışa aktarır - sadece PDF yanlıştır. Umarız google-drive-sdk etiketini izleyen Google mühendislerinden biri ([SDK Destek Sayfasına [https://developers.google.com/drive/support] adresine göre) sorunuzu fark edeceksiniz! – azawaza

+0

@azawaza: iyi nokta! Başlığı PDF'ye odaklanmak için güncelledim. Bu, ilgilendiğim tek şeyin PDF olduğunu gösteriyor! – Mogsdad

cevap

7

Google mühendisleri, aşağıda gösterilen kodu kullanarak sorunu yeniden ürettiler ve bununla ilgili bir iç hata raporu hazırladılar. Örnek kod Google Apps Komut Dosyası'ndayken, sorun Google Drive’ın kendisidir.

Sorun İzleyicisi'nde Issue 4008 numaralı telefonu ziyaret ederek ve oynayarak ilerlemeyi izleyebilirsiniz.

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); 
    }); 
    }); 
} 
İlgili konular