Javascript 谷歌应用程序脚本,团队驱动的谷歌选择器
221/5000 你好!!目前,我正在尝试为google团队驱动实现google pikker。这段代码适用于我的谷歌硬盘,但如果您将这段代码用于谷歌团队硬盘,请添加参数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的
.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);
}
}