谷歌应用脚​​本,团队驱动的谷歌选择器

2024-02-06

221/5000

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

.enableFeature(google.picker.Feature.SUPPORT_TEAM_DRIVES)

and

.setSelectFolderEnabled(true)

文件显示窗口中为空。

我该如何修复它? 谢谢你!

它应该看起来像这样:

我认为 OAuth 2.0 有问题。

有一篇关于团队驱动选择器的好文章https://developers.google.com/drive/v3/web/picker https://developers.google.com/drive/v3/web/picker,但不使用此参数:

.enableFeature(google.picker.Feature.SUPPORT_TEAM_DRIVES)

.setSelectFolderEnabled(true)

选取器.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>

code.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();
    }

将 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);
    }
  }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

谷歌应用脚​​本,团队驱动的谷歌选择器 的相关文章

随机推荐

  • 实体框架性能调优

    我们正在使用实体框架来查询 SQL Server 数据库 LINQ 表达式是 IQueryable 该查询的执行时间大约为 10 秒 如果这是在存储过程中 我会使用查询来提高效率 但是 如果我使用 IQueryable 实体框架本身是否决定
  • 使用 awk 打印每隔一个字段

    我有以下输入文件 我希望打印每隔一个字段 A 1 B 2 C 3 获得以下输出 1 2 3 我努力了 awk BEGIN FS OFS for i 2 i lt NF i 2 print i input file 这显然行不通 我认为我的
  • 全局 alt+space 热键抓取 - 奇怪的键盘焦点行为

    我正在抓Alt Space全局热键使用xcb grab key 如下 xcb key symbols t keysyms xcb key symbols alloc c xcb keycode t keycodes xcb key symb
  • 如何在 DirectoryInfo.EnumerateFiles 完成之前访问它

    在我问的问题中快速检索文件夹和所有子文件夹中的文件名列表 https stackoverflow com questions 10604830 retrieve a list of filenames in folder and all s
  • JSON:c# 中的 java Map 等价物是什么

    我面临的问题是使用 JSON 将对象传递给 C 然后 C 将字符串传递回 Java 然后 java 将其反序列化为 Map 顺便说一句 net 版本是 3 5 这是问题所在 java 地图 JSON 字符串的格式如下 key1 value1
  • 使用正则表达式消除谷歌应用程序脚本中的换行符

    我正在尝试为 Google Docs 编写一个附加组件的一部分 该附加组件可以使用以下命令消除所选文本中的换行符replaceText 显而易见的text replaceText n 给出错误Invalid argument searchP
  • 从数组反应本机生成时,多个开关(切换)会同时启用

    现在我的构造函数中有一个像这样的数组 words test test test 在渲染内部 我想为每个元素生成一个带有文本和开关 切换 的元素 如下所示 const wordList this state words map item i
  • 关于Scala闭包的问题(来自《Scala编程》)

    我不明白为什么作者说 Scala 编程 中的代码清单 9 1 使用闭包 在第 9 章中 他们展示了如何将原始代码重构为更少重复的形式 object FileMatcher private def filesHere new java io
  • PHP:在输出中查找具有相对路径的图像和链接并将其转换为绝对路径

    有很多关于 PHP 中相对路径与绝对路径转换的帖子 我正在寻找这些帖子之外的具体实现 希望如此 有人可以帮我完成这个具体的实施吗 我有一个包含不同 HTML 的 PHP 变量 包括hrefs and imgs 包含相对 url 大部分 例如
  • 重新连接时 iPhone 无法发现蓝牙 LE 标签上的服务

    我正在开发适用于 iOS 的蓝牙 LE 应用程序 我使用 iOS 中的核心蓝牙框架来处理所有通信 问题及描述 当我使用单个标签时 尽管有多次连接和断开连接 单个标签仍可以无缝连接 并且手机会发现它的服务 此外 当多个蓝牙 LE 标签首次连接
  • ASP.NET MVC 更新一个表单上的对象列表? (模型绑定到列表)

    关于更新 ASP NET MVC 中的项目列表的快速问题 基本上我有一个编辑操作方法 它返回对象的集合 顺便说一句 其表结构如下所示 testID assetID Result 链接表 我基本上希望这些项目在表单中一个接一个地显示 并且能够
  • 无法停止使用 ExecutorService 启动的任务

    抱歉 我必须打开一个新线程来描述这个问题 今天早上我问这个问题 https stackoverflow com questions 8632773 how to stop immediately a task which is starte
  • Flutter BLoC 测试失败

    目前正在尝试对我的肘节实施单元测试 我感觉严重缺乏 BLoC 在线测试文档或有用的示例 谁能解释一下我在设置这个测试时做错了什么 我似乎无法弄清楚问题是什么 如果有人能告诉我我能做些什么来解决这个问题 我将不胜感激 设置状态文件 class
  • Android DownloadManager 保存到 Download 文件夹

    我正在使用 DownloadManager 来下载文件 我想将下载内容放在标准下载文件夹中 以便人们可以使用文件管理器在最明显的位置轻松找到它们 Uri downloadLocation Uri fromFile new File Envi
  • 如何实现中值堆

    与最大堆和最小堆一样 我想实现中值堆来跟踪给定整数集的中值 API应具有以下三个功能 insert int should take O logN int median will be the topmost element of the h
  • Angular2 路由。请求的路径在索引 1 处包含未定义的段

    我在 Angular 2 中遇到路由问题 我从操作调用 router navigate 到数据表 罕见的是 有时当我单击调用该行的按钮时 它可以正常工作 有时却不能 this router navigate edit id relative
  • 在selenium问题中打开chrome

    我目前正在参加我的第一个自动化测试课程 讲师让我们在加载 Selenium 后在 Eclipse 中创建一个程序 并在程序中创建一个步骤来查看可执行文件以启动 chrome 然后指定一个网站进行检查 看起来我陷入了循环 这是程序 java程
  • 使用 r 删除希伯来语“niqqud”

    一直在努力去除niqqud https en wikipedia org wiki Niqqud 用于表示元音或区分希伯来字母表字母的替代发音的变音符号 例如我有这个变量 样本1 我找不到有效的方法来删除字母下面的标志 尝试过纵梁 与str
  • 从 Web 开发学习 Objective C (Cocoa) 进行 iPhone 编程?

    我想学习开发 iPhone 应用程序 我在 HTML CSS 和 PHP 方面拥有丰富的经验 我也了解一些 JavaScript 我应该从哪里开始 我已经下载了带有 XCode 的 SDK 等等 我是不是有点超前了 我真的不知道 有教程或者
  • 谷歌应用脚​​本,团队驱动的谷歌选择器

    221 5000 你好 目前我正在尝试为谷歌团队驱动器实现谷歌pikker 此代码适用于我的 Google 云端硬盘 但如果您将此代码用于 Google Team Drives 请添加参数 enableFeature google pick