user2498465
user2498465

Reputation: 77

Google Drive API, Meta-Data

I am uploading documents to Google Drive successfully but my meta-data does not appear to be getting back to me correctly.

protected File insertFile(Drive service, List<String> parentIds, com.google.drive.FileContent fileContent, File googleFile)throws IOException {
  // Set the parent folder.
  if (parentIds != null && parentIds.size() > 0) {
      List<ParentReference> parentReferences = new ArrayList<ParentReference>();
      for (String parentId : parentIds ){
          parentReferences.add(new ParentReference().setId(parentId));
      }
      googleFile.setParents( parentReferences ); 
  }

  try {

      googleFile = service.files().insert(googleFile, fileContent).execute();

      // Uncomment the following line to print the File ID.
      System.out.println("File ID: " + googleFile.getId());

      return googleFile;
  } 
  catch (IOException e) {
      System.out.println("An error occured: " + e);
      return null;
  }
}

Above is my insert statement, below is what I am sending as details about the document.

{description=XXXXXXX Invoice, fileExtension=pdf, indexableText={text=XXXXXXX Invoice}, labels={restricted=false}, mimeType=application/pdf, parents=[{id=0B_owsnWRsIy7S1VsWG1vNTYzM1k}], properties=[{key=DocumentType, value=11}], title=XXXXXXX Invoice}

When I do a get for that same document using this code

protected InputStream downloadFile(Drive service, File file)throws IOException {
    if (file.getDownloadUrl() != null && file.getDownloadUrl().length() > 0) {

        HttpResponse resp =
            service.getRequestFactory().buildGetRequest(new GenericUrl(file.getDownloadUrl()))
                .execute();
        return resp.getContent();
    } 
    else {
      // The file doesn't have any content stored on Drive.
      return null;
    }
}

I get most of the text back minus the indexable Text and File Extension, is that correct (Do not want to show since it contains a lot of information that is noise)?

Upvotes: 1

Views: 460

Answers (1)

Dan McGrath
Dan McGrath

Reputation: 42038

Two separate issues here.

1) fileExtension is a read-only field so it is being ignored. When retrieving the information, it is derived from the original title/filename. Since your title doesn't include ".pdf" it is being set to empty.

2) indexableText is write-only in we don't allow you to retrieve it once set; it is only used by the drive backend to service search queries.

You can read more on the different metadata properties of the file resource in our documentation.

Upvotes: 2

Related Questions