// NOTE: These will get set from loadPicker... // Go to: https://console.developers.google.com/apis/credentials/oauthclient/ // The Browser API key obtained from the Google API Console. // Replace with your own Browser API key, or your own key. let developerKey = ''; // The Client ID obtained from the Google API Console. Replace with your own Client ID. let clientId = "" // Replace with your own project number from console.developers.google.com. // See "Project number" under "IAM & Admin" > "Settings" let appId = ""; // Scope to use to access user's Drive items. let scope = ['https://www.googleapis.com/auth/drive.file']; let pickerApiLoaded = false; let picker = null; let oauthToken; // Use the Google API Loader script to load the google.picker script. async function loadPicker() { let message = "[Google Drive Picker Setup Error] Check console for error..." try { const data = await fetchData( formatURL('static/google-api-data.json') ) if (data.developerKey == "" || data.clientId == "" || data.appId == "") { message = "[Google Drive Picker Setup Error] Set the fields in static/google-api-data.json file..."; throw message } developerKey = data.developerKey; clientId = data.clientId; appId = data.appId; } catch (e) { console.log(e); displayMessage(message, "warning"); return ; } gapi.load('auth', {'callback': onAuthApiLoad}); gapi.load('picker', {'callback': onPickerApiLoad}); } function onAuthApiLoad() { window.gapi.auth.authorize( { 'client_id': clientId, 'scope': scope, 'immediate': true }, handleAuthResult); } function onPickerApiLoad() { pickerApiLoaded = true; console.log("Picker Api Loaded"); createPicker(); } function handleAuthResult(authResult) { if (authResult && !authResult.error) { oauthToken = authResult.access_token; console.log("Got auth..."); createPicker(); } else { console.log("Auth issue..."); console.log(authResult.error); } } // Create and render a Picker object for searching files. function createPicker() { if (pickerApiLoaded && oauthToken) { let ulView = new google.picker.DocsUploadView() .setIncludeFolders(true); let docsView = new google.picker.DocsView() .setIncludeFolders(true) .setSelectFolderEnabled(true) .setIncludeFolders(true) .setParent("ROOT"); picker = new google.picker.PickerBuilder() .enableFeature(google.picker.Feature.MULTISELECT_ENABLED) .setAppId(appId) .setOAuthToken(oauthToken) .addView(docsView) .addView(ulView) .setDeveloperKey(developerKey) .setCallback(pickerCallback) .build(); console.log("Created Picker..."); } } function showGooglePicker() { try { picker.setVisible(true); setTimeout(function () { const picker = document.getElementsByClassName('picker shr-q-shr-r picker-dialog')[0]; const pickerBgs = document.getElementsByClassName('picker shr-q-shr-r-shr-xb picker-dialog-bg'); pickerBgs[0].style.display = "none"; pickerBgs[1].style.display = "none"; picker.style.top = "4em"; picker.stylezIndex = "999"; }, 1200); } catch (e) { displayMessage("No Google API Picker object setup...", "warning"); return ; } } // A simple callback implementation. function pickerCallback(data) { if (data.action == google.picker.Action.PICKED) { var fileId = data.docs[0].id; console.log('The user selected: ' + fileId); } }