Ravi Agrawal
Ravi Agrawal

Reputation: 87

How do I stop the Google Drive Picker UI to close automatically after choosing particular file?

By default, Google Picker closes automatically if I select any file (csv or text or xls). I want that it should close only if the extension is csv format.

Please suggest what change do I need to do here in my code.

function pickerCallback(data) {
    var url = 'nothing';
    var file_Id = '';
    var fileType = '';
    if (data[google.picker.Response.ACTION] == google.picker.Action.PICKED) {
        var doc = data[google.picker.Response.DOCUMENTS][0];
        console.log(doc);
        url = doc[google.picker.Document.URL];
        file_Id = doc.id;
        fileType = doc.mimeType;
        if (fileType != "text/csv") {
            alert("Error: Selected item is not CSV file");
            // Google Picker closes automatically - Problem
            // Restrict Google Picker from closing here
        } else {
            // Google Picker closes automatically - OK
            downloadfile(file_Id); // function to perform on fetched file
        }
    }
    var message = 'You picked: ' + url + ' having File Id: ' + file_Id;
    console.log(message);
}

Upvotes: 1

Views: 1121

Answers (1)

danielx
danielx

Reputation: 1793

The Picker API has a method for specifying selectable MIME types.

PickerBuilder.setSelectableMimeTypes(string)

Set the list of MIME types which will be selectable. Use commas to separate MIME types if more than one is required.

https://developers.google.com/picker/docs/reference#PickerBuilder

Example

const view = new window.google.picker.DocsView();
const picker = new window.google.picker.PickerBuilder()
  .addView(view)
  .setSelectableMimeTypes('text/csv')
  .setCallback(pickerCallback)
  .build();

Optionally you can restrict which MIME types that should be displayed so the user will only see text/csv files.

View.setMimeTypes(string)

For views listing documents, set the MIME types which will be included in the view. Use commas to separate MIME types if more than one is required.

https://developers.google.com/picker/docs/reference#View

Example

const view = new window.google.picker.DocsView().setMimeTypes('text/csv');
const picker = new window.google.picker.PickerBuilder()
  .addView(view)
  .setCallback(pickerCallback)
  .build();

Upvotes: 3

Related Questions