问题标签 [google-drive-shared-drive]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
281 浏览

python-3.x - 共享 google drive API 凭据以供脚本使用的最佳实践?

简而言之:我是否应该在我们的源代码中共享 oauth2-credentials 以及从专用的单一用途 google 帐户对 google 驱动器的完全写入访问权限?

所以,我编写了一个 python 脚本,它可以将一些数据保存到预先存在的 google-sheets 文件中,或者在给定的 google drive 文件夹中创建一个新的 google-sheets 文件(这两个文件都是可公开编辑的,以便在团队之间共享) .

为此,我遵循了google和其他来源概述的步骤和教程,之后我获得了 oauth2-credentials,以便我的脚本通过 google drive 和 google sheet API 进行身份验证。

这些凭据来自我为此脚本创建的单一用途的 google 帐户。

现在我想与其他团队成员分享这个脚本,但不确定如何处理凭证;任何一个:

一种。)

我将合并建议的 google 工作流程,让脚本的用户对他/她自己进行身份验证,即用户启动脚本,然后被定向到 google-authentication weblogin,对脚本进行身份验证,然后脚本将保存并使用那些用户用于将数据写入公共 google-sheets 文件(不一定是用户拥有的私有文件)的凭据。

这有以下缺点:

  • 用户将使用凭据信任我的脚本,这可以使其能够读取/写入用户驱动器帐户的所有数据。虽然我当然没有任何伤害的意思,但要求和负责似乎仍然太多了
  • 它打破了我脚本的预期直接工作流程。
  • 从技术上讲根本没有必要,因为脚本只能写入公共工作表文件/驱动器文件夹;那么为什么它需要对所有用户的驱动器文件进行写访问呢?

乙)

将我们的单一用途帐户的凭据硬编码到脚本中;唯一的缺点是当脚本的源代码将被共享时,任何人都可以获得这些凭据。但是这些凭据只会使攻击者能够将数据写入/读取帐户的 google 驱动器,但由于 oauth2 凭据范围的限制(我使用了“ https:// www.googleapis.com/auth/drive范围)。此外,如前所述,我们只会使用脚本将数据读/写到真实 google 帐户拥有的公共工作表文件中,因此我们永远不会使用单一用途帐户的驱动器,因此攻击者无法破坏我们的数据。

因此,我宁愿选择选项 B,但我无法摆脱硬编码公开可读凭证带来的焦虑......

你有什么建议?

0 投票
1 回答
485 浏览

python - 无法将 csv 作为内容中包含特殊字符的 Google 表格上传

我一直在绞尽脑汁想弄清楚为什么我不能通过 API 服务将文件上传到谷歌驱动器。我已经指出这个问题与神奇宝贝中的特殊角色有关。如果我将其更改为常规 e,则上传文件没有问题。

我已经发现尝试了以下有效的方法,但我完全失去了é。

有没有办法更改 API 用于上传文件的编码?我经常得到的错误是

我的示例代码如下所示

最后,我使用实际的 google Drive 手动完成了此操作,其中包含一个仅包含 Pokémon 的文件,并且我从未丢失 é,所以我觉得这一定是可能的。

0 投票
0 回答
34 浏览

web-applications - 谷歌驱动编辑历史是如何实现的?

我正在实施一个问题管理系统,其中包含一堆问题库,每个库都包含章节和部分(每个部分都有问题)。我需要显示以上所有级别的历史记录:

  1. 例如:
    用户 X 已在 C 章 S 节中添加/修改了问题 Y。用户 X 已添加/修改 C 章 s 节。
  2. 用户已与这些用户共享此题库。

请提出一些工具或数据库方案来实现这种设计。

在此处输入图像描述

0 投票
0 回答
98 浏览

python - 在 Mac 上从 Volume 执行时出现奇怪的导入行为

Google File Stream 是一个用于将我的 Google Drive 文件同步到我的 Mac 的工具。它在 Finder 中显示为外部卷。如果我有一个简单的python脚本,我可以正常执行。但是,当我尝试导入卷上同一目录中存在的另一个模块时,我收到导入错误。例如:

主要.py:

foo.py:

跑步:

更奇怪的是:

主文件

导入错误在此代码中消失。但是,如果您删除print(os.listdir()),则会返回导入错误。此外,os.listdir()返回一个意外的空列表。

0 投票
1 回答
566 浏览

java - 如何解决 Google 服务帐户团队驱动器创建文件权限不足的错误?

我正在尝试使用我的服务帐户创建 Google 团队云端硬盘,但收到了不足的FilePermissions 错误。有谁知道如何使用服务帐户创建 Google 团队云端硬盘,或者可以确定我在这里做错了什么?

为了便于使用,我创建了一个 github 项目,其中包含此处提供的文件。 https://gitlab.com/eghm-lab/stackoverflow-google-service-account-test-drive-creation

我在下面提供了错误、SOTeamDriveCreate 的 Java 代码和 pom.xml。将 SOTeamDriveCreate.java 放入 src/main/java 后。应该将他们的服务帐户凭据 client_secrets.json 文件复制到与 pom 文件相同的目录中。然后执行:

不足的FilePermissions 错误:

SOTeamDriveCreate.java:

pom.xml:

0 投票
0 回答
49 浏览

google-api - 未收到其他用户在团队驱动器上执行的活动的推送通知

我正在使用管理员凭据进行身份验证。我正在接收管理员在团队驱动器上执行的活动,但与团队驱动器共享的成员执行的活动没有出现webhook

0 投票
2 回答
232 浏览

google-apps-script - Drive Search 和 DriveApp.searchFiles(target) 之间的差异

在这里发布这个是因为我在网络上的其他地方没有找到任何注释或解决方案。

我目前在使用驱动器搜索工具栏和DriveApp.searchFiles()应用程序脚本的功能时遇到搜索结果之间的差异,如下所示。

驱动器搜索栏始终返回给定查询的完整结果 [查看文档和标题中的所有文本],但DriveApp.searchFiles() 不返回。某些文件丢失/未返回。

在找到仅从驱动器搜索栏返回的给定文件(DriveApp 搜索未返回的文件)并打开它后,它开始出现/被DriveApp.searchFiles().

这个问题进一步似乎是用户特定的问题。我们正在开发的脚本被多个用户使用,新用户(添加到现有文件系统然后提供我们的工具的用户)在大多数文件中都会遇到这个问题。之后,当他们打开给定的“丢失”文件时,它会再次开始出现在搜索结果中。

作为参考,我的代码如下:

在此问题的所有情况下,驱动器搜索栏都会返回完整列表并打开给定文件“修复”其问题。鉴于我们正在尝试做的事情的规模,不可能让每个用户都打开每个文件。

为澄清起见,这些文件位于团队驱动器或传统 G 套件中的大型文件系统中。用户可以通过添加到最高级别的文件、团队驱动器或添加到已经可以访问文件系统的用户组来获得访问权限。所有用户都在我们的域内。

这是已知的差异吗?我的搜索查询中是否有什么我可能做错了导致这种情况?我对任何潜在的解决方案或想法感兴趣。

0 投票
2 回答
387 浏览

google-apps-script - 如何检查文件是属于我的云端硬盘还是团队云端硬盘

有没有更省时的方法来检查文件的根目录是“我的驱动器”还是“团队驱动器”?

我尝试过使用file.getParents();然后遍历每个父级,最后到 Root,但这太耗时了。

0 投票
1 回答
236 浏览

google-drive-realtime-api - 谷歌数据工作室

我只是想问一下,是否有一种方法可以在密码受限站点上使用数据工作室在谷歌文档上发布实时数据?(没有它对所有用户在线可见)。

用户将通过多个域电子邮件(例如 gmail 或公司域)登录。所以这是需要考虑的。

请给此问题的潜在解决方案留言。可以提供更多信息。

谢谢你。

TS。

0 投票
1 回答
1090 浏览

c# - 使用 Windows 服务自动将文件上传到 Google 虚拟云端硬盘

我做了一个 Windows 服务;

  1. 每小时通过 WebClient 从定期更新的内部数据库下载 CSV 文件。

  2. 将该 CSV 文件放入指定文件夹。

    • 在原始测试用例中,它被放入我桌面上的本地文件夹 (C:)。
    • 测试用例完美运行。
  3. CSV 将用新下载的同名文件替换旧文件。

如上所列。这在本地文件夹上完美运行。但是,我们打算让它通过 Google Drive File Stream 工作。因为我们有一个 Google 表格,它可以为我们处理和查找给定名称下的任何 CSV 文件的数据。

这是当前下载和放置文件的方法。

我的问题是为什么我目前不能通过 Windows 服务自动将文件上传到 Google Drive File Stream?是因为 Google Drive File Stream 需要某些权限或操作吗?是因为驱动器是“虚拟的”而不是物理的(H:)?以下是我尝试在 Google Drive File Stream (H:\My Drive\Test) 中上传到的文件夹。

Google 虚拟云端硬盘

代码也完全运行,因为日志文件显示使用了这些方法。但是,在下载和将 CSV 文件放入 Google Drive File Stream 文件夹之间似乎存在一些障碍。

更新:到目前为止进展甚微。我的一位同事可能建议需要一些用户许可才能推送。就像用户名和密码一样。如果这是真的,有谁知道我怎么能做到这一点?

更新#2:在“注册表编辑器”中,我发现了一些有趣的信息。

  1. 按 Windows + R
  2. 键入 regedit.exe
  3. HKEY_CURRENT_USER -> 软件 -> Google -> DriveFS -> 分享

在此处输入图像描述

如您所见,有两个值。' MountPoint = H' 显然是它映射到的驱动器号和 ' ShellIpcPath = \\.\Pipe\GoogleDriveFSPipe_user.name_shell' 这可能有用。我玩过 ShellcpPath 但没有占上风。

更新#3: @Ben Voigt 提到用于DriveInfo.GetDrives()查看服务是否找到驱动器。我运行代码,它看起来确实存在。这是控制台吐出的内容:

如您所见,它存在,但它使用File system: FAT32而不是File system: NTFS我所有其他驱动器使用(C:)、(D:) 等。因此,似乎只有 Google Drive File Stream 使用 FAT32。

测试用例:

将 CSV 文件放入本地文件夹时效果很好。

在此处输入图像描述

放入 Google Drive File Stream 文件夹时不起作用。

在这里输入想象

澄清测试用例。我实际上得到了两个 CSV 文件。但是,代码基本相同。所以我只提到在我原来的问题中得到一个,以保持它更干净和更直接。