2017-10-10 122 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

相关问题