Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 谷歌应用程序脚本,团队驱动的谷歌选择器_Javascript_Google Apps Script_Google Drive Api_Google Picker_Google Drive Shared Drive - Fatal编程技术网

Javascript 谷歌应用程序脚本,团队驱动的谷歌选择器

Javascript 谷歌应用程序脚本,团队驱动的谷歌选择器,javascript,google-apps-script,google-drive-api,google-picker,google-drive-shared-drive,Javascript,Google Apps Script,Google Drive Api,Google Picker,Google Drive Shared Drive,221/5000 你好!!目前,我正在尝试为google团队驱动实现google pikker。这段代码适用于我的谷歌硬盘,但如果您将这段代码用于谷歌团队硬盘,请添加参数 .enablefeact(google.picker.Feature.SUPPORT\u TEAM\u驱动器) 及 .setSelectFolderEnabled(true) “文件显示”窗口中的显示为空 我怎么能修好它? 谢谢大家! 它看起来应该是这样的: 我认为OAuth2.0有问题 有一篇关于团队驱动的picker的

221/5000

你好!!目前,我正在尝试为google团队驱动实现google pikker。这段代码适用于我的谷歌硬盘,但如果您将这段代码用于谷歌团队硬盘,请添加参数

.enablefeact(google.picker.Feature.SUPPORT\u TEAM\u驱动器)

.setSelectFolderEnabled(true)

“文件显示”窗口中的显示为空

我怎么能修好它? 谢谢大家!

它看起来应该是这样的:

我认为OAuth2.0有问题

有一篇关于团队驱动的picker的好文章,但没有使用以下参数:

.enablefeact(google.picker.Feature.SUPPORT\u TEAM\u驱动器)

.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>

将docsView变量更改为如下定义,以便在docsView的括号内包含
google.picker.viewId.DOCS
,如下所示:

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);
    }
  }

回答这个问题可能太晚了,但这是使用您的代码的解决方案

var对话框\u维度={
宽度:600,
身高:425
};
var pickerApiLoaded=false;
函数onapioad(){
gapi.load('选择器'{
“回调”:函数(){
pickerApiLoaded=真;
}
});
google.script.run.withSuccessHandler(createPicker)
.withFailureHandler(淋浴错误).getOAuthToken();
}
函数createPicker(令牌){
if(PickerApproaded&&token){
var Teamdrivesview=new google.picker.DocsView()
//.setIncludeFolders(真)
.setMimeTypes('application/vnd.google apps.folder')
.setSelectFolderEnabled(真)
.SetEnableTeamDrive(真);
var docsView=new google.picker.docsView()
.setIncludeFolders(真)
.setMimeTypes('application/vnd.google apps.folder')
.setSelectFolderEnabled(真)
.SetEnableTeamDrive(真);
var picker=new google.picker.PickerBuilder()
.addView(docsView)
.addView(Teamdrivesview)
.enableFeature(google.picker.Feature.SUPPORT\u TEAM\u驱动器)
.enableFeature(google.picker.Feature.NAV_隐藏)
.hideTitleBar()
.setSize(DIALOG_DIMENSIONS.width-2,DIALOG_DIMENSIONS.height-2)
.setOAuthToken(令牌)
.setCallback(pickerCallback)
.setOrigin('https://docs.google.com')
.build();
picker.setVisible(true);
}否则{
淋浴ROR('无法加载文件选择器');
}
}
/**
*一个回调函数,用于从
*响应对象。有关响应对象的详细信息,请参阅
* https://developers.google.com/picker/docs/result
*
*@param{object}将数据存储到响应对象。
*/
函数选择器回调(数据){
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];
//显示Google驱动器文件夹的ID
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();
}
}
功能错误(消息){
document.getElementById('result')。innerHTML='Error:'+message;

}
这对我不起作用。在应用google team drive启用选项时,我也只看到一个空白的弹出窗口。你能分享一下你的控制台错误日志吗?@timk:我用createPicker()函数中使用的代码编辑了我的答案,这对我来说很好。为什么你在上面的代码中添加了3次视图
addView(新的google.picker.DocsView(google.picker.ViewId.DOCS).setEnableTeamDrive(true)).addView(google.picker.ViewId.DOCS).addView(view)
@timk选择器为每个视图显示不同的选项卡。一个视图是我的常规驱动器文件(不是团队驱动器)。一个视图仅允许从文件夹列表中选择整个文件夹(也在普通驱动器中)。第三个视图是团队驱动,它与常规驱动是分开的。嗨,Emilio,你能解释一下你的代码吗。非常感谢。
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);
    }
  }