Search code examples
google-apps-scriptgoogle-picker

Google picker method "setSelectableMimeTypes is not a function" error in Google App Script


I am trying to use google picker API in Google app script, to allow the user to select the folder to which the document to be uploaded. I am using the following code

HTML FILE

function change_destination()
{
 gapi.load('picker', {'callback': function(){pickerApiLoaded = true;}}); 
 google.script.run.withSuccessHandler(createPicker).getOAuthToken();
}
function createPicker(token) 
{
   var docsView = new google.picker.DocsView().setSelectFolderEnabled(true).setParent('root');
   var callback = function(data) 
   {
    if (data.action == google.picker.Action.PICKED)
    {
     var doc = data.docs[0];
     console.log("You picked " + doc.id);
    }
   };
   var picker = new google.picker.PickerBuilder().setSize("650","470").setOAuthToken(token).addView(docsView).setOrigin('https://docs.google.com').setCallback(callback).build();
   picker.setSelectableMimeTypes('application/vnd.google-apps.folder');
   picker.setVisible(true);
}


 <script type="text/javascript" src="https://apis.google.com/js/api.js"></script>

CODE.gs

function getOAuthToken() 
{
  return ScriptApp.getOAuthToken();
}

Am getting the following error "setSelectableMimeTypes is not a function"


Solution

  • You need to set the setSelectableMimeTypes before the picker is build.

    var picker = new google.picker.PickerBuilder()
           .setSize("650","470")
           .setSelectableMimeTypes('application/vnd.google-apps.folder') //not sure about this Mime type
           .setOAuthToken(token)
           .addView(docsView)
           .setOrigin(google.script.host.origin)
           .setCallback(callback)
           .build()
       picker.setVisible(true);
    

    To display only folders in the picker view.

     var docsView = new google.picker.DocsView(google.picker.ViewId.FOLDERS).setParent('root');
       var picker = new google.picker.PickerBuilder()
           .setSize("650","470")
           .setOAuthToken(token)
           .addView(docsView)
           .setOrigin(google.script.host.origin)
           .setCallback(callback)
           .build()
       picker.setVisible(true);