0

他のドメイン ユーザーのすべてのファイルをエクスポート/ダウンロードする必要があります。管理者アカウントでクライアント ログインを使用して、ドメイン ユーザーのすべてのファイルを表示しました。ただし、エクスポート/ダウンロードできるのはドキュメントのみで、その他は失敗します。

他のファイルのダウンロード URL 形式は何ですか (ファイル、pdf、プレゼンテーション、スプレッドシートの場合)??

私のドキュメントのダウンロードURLは

https://docs.google.com/feeds/download/documents/Export?xoauth_requestor=admin@domain.com&docId=<id>&exportFormat=doc

私のプログラムは次のとおりです。

public class AuthExample {

private static DocsService docService = new DocsService("Auth Example");

public static void main(String[] args)
    throws Exception
{
    String adminUser = admin;
    String adminPassword = adminpasswd;
    String impersonatedUser = "user@domain.com";

    docService.setUserCredentials(adminUser, adminPassword);
    URL url = new URL( "https://docs.google.com/feeds/" + impersonatedUser + "/private/full");
    DocumentListFeed feed = docService.getFeed(url, DocumentListFeed.class);
    for (DocumentListEntry entry : feed.getEntries()) {


String title = entry.getTitle().getPlainText();
System.out.println( title );

String type = entry.getType();
if ( type.equals("document") )
{
    String encodedAdminUser = URLEncoder.encode(adminUser);
    String resourceId = entry.getResourceId();
    String resourceIdNoPrefix = resourceId.substring( resourceId.indexOf(':')+1 );

    String downloadUrl =
        "https://docs.google.com/feeds/download/documents/Export" +
        "?xoauth_requestor=" + encodedAdminUser +
        "&docId=" + resourceIdNoPrefix +
        "&exportFormat=doc";

    downloadFile( downloadUrl, title + ".doc" );
}

    }
}



// Method pasted directly from Google documentation
public static void downloadFile(String exportUrl, String filepath)
    throws IOException, MalformedURLException, ServiceException
{
System.out.println("Exporting document from: " + exportUrl);
MediaContent mc = new MediaContent();
mc.setUri(exportUrl);
MediaSource ms = docService.getMedia(mc);

InputStream inStream = null;
FileOutputStream outStream = null;

try {
        inStream = ms.getInputStream();
    outStream = new FileOutputStream(filepath);
                    int c;
    while ((c = inStream.read()) != -1) {
    outStream.write(c);
    }
} finally {
    if (inStream != null) {
        inStream.close();
    }
    if (outStream != null) {
    outStream.flush();
        outStream.close();
    }
}
}

}

4

1 に答える 1

0

ダウンロード リンクを手動で作成しないでください。代わりに、ドキュメントで説明されているように、エントリのコンテンツ リンクを使用してください。

https://developers.google.com/google-apps/documents-list/#downloading_documents_and_files

于 2012-06-01T19:54:17.720 に答える