2017-10-10 77 views
2

221/5000谷歌應用腳​​本,團隊驅動器的谷歌選取器

您好!目前,我正在嘗試爲Google團隊驅動器實施Google pikker。此代碼非常適用於我的谷歌驅動器,但如果您使用此代碼對谷歌團隊的驅動器,添加參數

.enableFeature(google.picker.Feature.SUPPORT_TEAM_DRIVES)

.setSelectFolderEnabled(true)

在文件顯示窗口爲空。

我該如何解決它? 謝謝!

enter image description here

它應該看起來像:

enter image description here

我認爲問題的OAuth 2.0。

有關於裝載機團隊驅動https://developers.google.com/drive/v3/web/picker好文章,但不使用此參數:

.enableFeature(google.picker.Feature.SUPPORT_TEAM_DRIVES)

.setSelectFolderEnabled(true)

Picker.html

<!DOCTYPE html> 
<html> 
<head> 
    <link rel="stylesheet" href="https://ssl.gstatic.com/docs/script/css/add-ons.css"> 
    <script type="text/javascript"> 
    var DIALOG_DIMENSIONS = { 
     width: 600, 
     height: 425 
    }; 

    var pickerApiLoaded = false; 

    function onApiLoad() { 
     gapi.load('picker', { 
      'callback': function() { 
       pickerApiLoaded = true; 
      } 
     }); 
     google.script.run.withSuccessHandler(createPicker) 
      .withFailureHandler(showError).getOAuthToken(); 
    } 

    function createPicker(token) { 

     if (pickerApiLoaded && token) { 

      var docsView = new google.picker.DocsView() 
       .setIncludeFolders(true) 
       .setMimeTypes('application/vnd.google-apps.folder') 
       .setSelectFolderEnabled(true) 
       .setEnableTeamDrives(true); 

      var picker = new google.picker.PickerBuilder() 
       .addView(docsView) 
       .enableFeature(google.picker.Feature.SUPPORT_TEAM_DRIVES) 
       .enableFeature(google.picker.Feature.NAV_HIDDEN) 
       .hideTitleBar() 
       .setSize(DIALOG_DIMENSIONS.width - 2, DIALOG_DIMENSIONS.height - 2) 
       .setOAuthToken(token) 
       .setCallback(pickerCallback) 
       .setOrigin('https://docs.google.com') 
       .build(); 

      picker.setVisible(true); 

     } else { 
      showError('Unable to load the file picker.'); 
     } 
    } 

    /** 
    * A callback function that extracts the chosen document's metadata from the 
    * response object. For details on the response object, see 
    * https://developers.google.com/picker/docs/result 
    * 
    * @param {object} data The response object. 
    */ 
    function pickerCallback(data) { 
     var action = data[google.picker.Response.ACTION]; 
     if (action == google.picker.Action.PICKED) { 
      var doc = data[google.picker.Response.DOCUMENTS][0]; 
      var id = doc[google.picker.Document.ID]; 
      // Show the ID of the Google Drive folder 
      document.getElementById('result').innerHTML = id; 
      /**/ 

      google.script.run.searchFileInFoder(id); 
      google.script.host.close(); 
      /**/ 
     } else if (action == google.picker.Action.CANCEL) { 
      google.script.host.close(); 
     } 
    } 

    function showError(message) { 
     document.getElementById('result').innerHTML = 'Error: ' + message; 
    } 
    </script> 
</head> 

<body> 
    <div> 
     <p id='result'></p> 
    </div> 
    <script type="text/javascript" src="https://apis.google.com/js/api.js?onload=onApiLoad"></script> 
</body> 
</html> 

代碼。 gs

/*Picker for сhoose folder*/ 
    function showPicker() { 
    var html = HtmlService.createHtmlOutputFromFile('Picker.html') 
     .setWidth(600) 
     .setHeight(425) 
     .setSandboxMode(HtmlService.SandboxMode.IFRAME); 
    SpreadsheetApp.getUi().showModalDialog(html, 'Select Folder'); 
    } 

     function getOAuthToken() { 
     DriveApp.getRootFolder(); 
     return ScriptApp.getOAuthToken(); 
    } 
+0

嗨!如果您爲Stack未來的努力簽出[提問格式](http://stackoverflow.com/help/how-to-ask)會更好。 - 謝謝 – Momin

+0

如果遇到任何錯誤,您是否檢查過日誌? –

+0

你不能告訴我怎麼做到這一點? – Aharon

回答

1

更改docsView變量是這樣定義的,所以你包括google.picker.viewId.DOCS DocsView像這樣的括號內:

let docsView = new google.picker.DocsView(google.picker.ViewId.DOCS) 
         .setEnableTeamDrives(true); 

我試圖執行上面的問題的代碼,我有幾個控制檯錯誤和選取器沒有正常工作。可能它與.setOrigin參數有關。由於我不知道控制檯日誌,因此我無法確定您的代碼的哪個部分導致錯誤。但無論如何,下面是我的完整的createPicker()函數,它適用於我:

function createPicker() { 
    if (pickerApiLoaded && oauthToken) { 
     var view = new google.picker.DocsView(google.picker.ViewId.FOLDERS) 
         .setSelectFolderEnabled(true); 
     var picker = new google.picker.PickerBuilder() 
      .enableFeature(google.picker.Feature.SUPPORT_TEAM_DRIVES) 
      .addView(new google.picker.DocsView(google.picker.ViewId.DOCS) 
         .setEnableTeamDrives(true)) 
      .addView(google.picker.ViewId.DOCS) 
      .addView(view) 
      .setOAuthToken(oauthToken) 
      .setDeveloperKey(developerKey) 
      .setCallback(pickerCallback) 
      .build(); 
     picker.setVisible(true); 
    } 
    } 
+0

這不適合我。應用Google團隊雲端硬盤啓用選項時,我也只會看到一個空白的彈出窗口。 – timk

+0

您可以分享您擁有的控制檯錯誤日誌嗎? – Abba

+0

@timk:我用我在createPicker()函數中使用的代碼編輯了我的答案,該函數對我來說工作正常。 – Abba

相關問題