如何使用应用程序脚本获取有权访问 Google 共享云端硬盘的所有用户的列表

2023-12-10

我使用 getEditors 获取电子表格的编辑者列表,返回的列表包括共享云端硬盘用户。但是,对共享云端硬盘具有“内容管理员”访问权限的用户不包含在列表中。出现这种情况有什么原因吗?

我还发现 getAccess 可用于获取特定用户对驱动器文件夹的访问类型。使用这种方法,我的目标是识别具有 FILE_ORGANIZER 或 ORGANIZER 权限的所有用户。看关于权限的官方文档。 是否可以使用 if 语句或循环来获取此信息?

或者,是否有一种解决方法可以获取我可能没有考虑过的有权访问共享驱动器的所有用户的列表?

PS:高级驱动服务未启用。

// This code aims to protect a sheet in a spreadsheet 
// by granting specific users access (super users) 
// and revoking the access of any other user that can edit the spreadsheet. 

/*
Attempted approach:

user1 and user2 have manager permission to the shared drive as a whole
user3 has content manager permission to the shared drive as a whole
user4 only has access to this spreadsheet in the shared drive

My objective is to ensure that only users 1 and 2 can edit the protected sheet.

Result:
Log shows that users 1 and 2 have access and user 4 does not.
However, user3 can still edit the sheet because they were no included in the getEditors() result hence their access could not be revoked. 
*/

function protectASheet() {
  var superusers = ['user1', 'user2'];
  var ss = SpreadsheetApp.getActive();
  var editors = ss.getEditors(); //get file editors
  var sheet = SpreadsheetApp.getActive().getSheetByName('TestSheet');

  //Set protection  
  var protection = sheet.protect().setDescription('This sheet is protected.');

  protection.addEditors(superusers); //Grant superusers edit permission
  protection.removeEditors(editors); //Revoke other file editors' permission

  Logger.log("Only the following can edit " + sheet.getSheetName() + ": " + protection.getEditors());


}

从同事那里得到了一些帮助。 此方法依赖于在脚本编辑器中激活的高级驱动器服务。要打开,请转至资源 -> 高级 Google 服务。

它无一例外地获取对文件或文件夹具有任何形式访问权限的每个用户的权限和其他详细信息。

代码如下:

function getPermissionsList() {
  const fileId = "<FILE, FOLDER OR SHARED DRIVE ID HERE>"; // ID of your shared drive

  // THIS IS IMPORTANT! The default value is false, so the call won't 
  // work with shared drives unless you change this via optional arguments
  const args = {
    supportsAllDrives: true
  };

  // Use advanced service to get the permissions list for the shared drive
  let pList = Drive.Permissions.list(fileId, args);

  //Put email and role in an array
  let editors = pList.items;
  var arr = [];

  for (var i = 0; i < editors.length; i++) {
    let email = editors[i].emailAddress;
    let role = editors[i].role;

    arr.push([email, role]);

  }

  Logger.log(arr);

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

如何使用应用程序脚本获取有权访问 Google 共享云端硬盘的所有用户的列表 的相关文章

  • 如何阻止 MailApp.sendEmail() 每约 80 个字符向电子邮件正文添加换行符?

    我正在使用附加到我的 Google 云端硬盘中的 google 工作表的 google 脚本来发送电子邮件 我注意到 MailApp sendEmail 发送的电子邮件的正文与原来的不太一样 它每约 75 个字符添加一个换行符 不中断单词
  • .setFormula() 并收到错误缺少 ) 参数列表

    I have setFormula 并坚持这一点 我认为问题在于逗号 在发布这个问题之前 我研究了几个在线论坛 但没有运气 也许这里有人可以帮助我 我确实知道使用的规则 and 这就是为什么我尝试了几个公式 但仍然收到错误消息 参数列表后缺
  • 如何使用 Google Apps 脚本编辑现有的 Google 表单项(问题)

    我有一个谷歌脚本来构建谷歌表单 该脚本使用包含问题和相应选项的电子表格填写表单 表格中显示的问题需要定期更新 我希望通过更改电子表格中的问题来更新表单中的问题 如下所示 I use onOpen 对于脚本 以便每次访问表单时 脚本都会重建最
  • 如何检查 Gmail 标签是否有嵌套子标签?

    使用Google Apps脚本 是否有一个功能可以检查Gmail标签是否有嵌套子标签 如果标签有一个或多个子标签 我想将它们从代码序列中排除 没有直接的方法可以从 父 标签获取标签 但是使用简单的方法来获取标签非常简单getUserLabe
  • 将 gsutil 与谷歌驱动器(不是谷歌云存储)一起使用

    gsutil https cloud google com storage docs gsutil csw 1 gettingstarted use 博托配置文件 https cloud google com storage docs gs
  • 从 google Drive 自行下载 xlsx 文件

    所以 我正在尝试制作一个小脚本 它将使用谷歌驱动器API下载一个Excel文件 通过遵循谷歌API教程 我遇到了两个错误 无法读取未定义的 on 属性 和 请求的转换是不支持 这是代码 const fs require fs const r
  • 无法实施第三方 Google 日历会议插件

    我正在研究 Google 日历会议插件的实施并发现了一些问题 我按照文档执行示例代码 但它没有按预期工作 从我的角度来看 我的清单文件是完整的 但是当我尝试从 从清单部署 链接发布日历会议插件时 它会打开我的谷歌日历 但它不会显示我的会议
  • 复制电子表格也会复制所有链接的文件

    当我使用库方法时 我希望能够仅复制电子表格及其所有工作表以及所有定义的工作表名称 spreadSheet copy newSSName Or myFile makeCopy newNameOfFile 目前 这些方法复制所有链接的表单和表单
  • 如何使用 OnChange() 触发器

    我有一个电子表格以及该电子表格的主副本 每次用户将数据输入单元格时 它都会获取新数据并放入主副本中 然而最近 我注意到一个用户创建了一个新列 该列未被 OnEdit 捕获 于是我查了一下 看到了去年实现的OnChange 但是 我不知道如何
  • 永远不会在 ios 的 google API 中获取上传数据进度

    我在我的应用程序中使用 Google Drive API 从我的应用程序上传文件 到目前为止 我成功了 并找到了上传所有类型文件的良好结果 我跟着谷歌示例 https developers google com drive examples
  • 通过 Apps 脚本强制刷新公式

    有时 更改单元格的值时 电子表格中的公式不会自动刷新 并且单元格上会出现注释以选择该单元格 然后按 CTRL SHIFT E 强制重新加载公式 我想从 Apps 脚本调用此重新加载函数 有没有办法用 Apps 脚本来做到这一点 我尝试了 S
  • Google电子表格脚本创建特定范围内的数据验证

    我正在尝试这个脚本来创建数据验证 但它总是不起作用 function test validation var Spread SpreadsheetApp getActiveSpreadsheet var Sheet Spread getSh
  • GoogleDrive + Alamofire:上传具有属性的文件

    我正在尝试通过 Swift 2 Alamofire 将文件 参数上传到 Google Drive 在下面的代码中 我更改了以下行 https www googleapis com upload drive v3 files uploadTy
  • 使用 Google 云端硬盘缩略图的正确方法是什么?

    我首先尝试存储和使用 API 返回的链接 但它会在短时间内过期 然后我尝试在本地下载并存储图像 并从我的服务器提供它 但是当我没有使用我的帐户登录时 缩略图链接会抛出 404 错误 尽管文档是完全公开的 提供 检索文档缩略图的正确方法是什么
  • 谷歌电子表格中的“MMMM yy”日期

    我有一个谷歌电子表格 其中我想要一个仅包含月份和年份名称的日期 例如September 2011 而且我还希望月份和年份能够轻松更改 有没有办法获得自定义日期格式来做到这一点 我发现我可以这样做 TEXT 40295 MMMM yy 但是日
  • 使用 Promise 对 Google 表格进行多次查询

    我是一名初学者编码器 需要一些帮助来加快我的 Google 表格查询速度 我环顾四周 找不到解决方案 我正在尝试快速对 Google 表格运行 25 个查询 这就是我的尝试方式 对 Google 工作表运行查询 将结果推送到数组 运行不同的
  • 尝试通过 Google Drive API 创建权限时出现错误“需要权限类型字段”

    我改编了 Google Drive API Quickstart for Node js 中的代码 发现here https developers google com drive v3 web quickstart nodejs 20 2
  • 如何在运行脚本之前提交活动单元格中所做的更改? (Google 表格/Google Apps 脚本)

    我正在使用 Google Apps 脚本在 Google 表格中创建提交表单 该表单位于一页上 提交内容被移至第二个隐藏页面 当用户填写表单后 他们按下提交页面上的按钮以激活脚本 我遇到的问题是 当用户填写最后一个单元格然后单击按钮时 输入
  • 从 Google Apps 脚本运行保存的 bigquery 查询?

    我们经常使用 Google Apps 脚本来运行 BigQuery 查询并将其放入 Google Sheet 中 然而 工作流程很烦人 在 BigQuery 中运行查询 直到正确为止 复制 粘贴到文本编辑器以放入换行斜杠 在应用程序脚本中运
  • 如何使用Google脚本获取当前单元格下单元格的值?

    我找不到看起来像这样的选项 var spreadsheet SpreadsheetApp getActive var sheet spreadsheet getActiveSheet sheet getRange sheet getCurr

随机推荐

  • 加密(模式和填充)

    我的任务是编写一个涉及加密的小型 Java 控制台应用程序 我对加密不熟悉 所以我必须先阅读一些内容 到目前为止 给出的高级要求是应使用 AES 256 生成一次性密钥来加密文件 之后 应使用接收者的公钥 RSA 2048 来加密该 AES
  • 是否有任何“DOM 更改”事件? [复制]

    这个问题在这里已经有答案了 可能的重复 检测 DOM 中的变化 我需要设置一个事件处理程序 每当在 DOM 上添加 更改 删除某些内容时 该事件处理程序就会触发 这个答案在我的情况下不起作用 第三方开发人员可以修改 DOM 每次 DOM 更
  • 使用文件字段保存节点

    我正在为 Drupal 站点创建批量上传功能 使用 flash 我可以将文件上传到特定的 url 然后由该 url 处理这些文件 我想要做的不仅仅是上传文件 而是创建一个特定类型的节点 并将文件保存到已使用 CCK 设置的文件字段中 由于这
  • 将事件绑定到文本节点

    这是我的 HTML 我需要将点击事件绑定到 someText div someText a href A link a div someText 可以是任何文本字符串 使用 jQuery 将文本节点包裹起来 span 单击该位置 试试看 h
  • c-ares 指定 DNS 解析的网络接口

    有没有办法可以设置 DNS 请求绑定到的网络接口 我们有一个项目 需要使用高优先级流会话通过一个接口 而所有其他请求通过第二个接口传递 示例 设置 eth0 以便所有 ares 请求将通过 eth0 而不是 wlan0 我无法在 c are
  • pyqtgraph中子图大小不等

    我试图解决在 pyqtgraph 布局中为子图设置不同大小比例的问题 但没有成功 代码如下所示 from pyqtgraph Qt import QtGui QtCore import pyqtgraph as pg import pyqt
  • 如何处理 puppeteer 中 ajax 请求后加载的元素

    我正在尝试使用 puppeteer 进行网页抓取 我最近需要处理负载的元素 当我单击搜索按钮时 结果会在 AJAX 中加载 并且我需要选择我尝试选择的元素位于搜索结果中 但不在页面的初始加载中 它生成的页面屏幕截图也包含搜索结果 如果它输出
  • 如何在c#中将ascii字符转换为byte

    您好 我在从 ASCII 转换为字节时遇到问题 我有代码 byte M Convert ToByte M 但这会从 UTF 16 转换为字节 我不想要 在我的问题中 我想发送带有 ASCII 代码的字节 只需告诉编译器将 char 转换为
  • 延迟共享元素转换以完成状态列表动画

    我一直在尝试 Lollipop 上的共享元素转换 我有一个回收器视图 它加载一些卡片 单击一下该卡片就会在下一个活动中展开到其详细信息 我在卡上设置了涟漪效果和 StateListAnimator 但这些是不可见的 因为过渡在这些效果完成之
  • 如何使用 C# Ado.Net 在 sql 查询中查找参数

    我得到了用户在运行时输入的查询 SELECT FROM Reports WHERE ReportDate gt DATEADD d Days getdate AND ReportCode cast Reportcode as int C N
  • 已初始化结构体的指定初始化

    我知道我可以使用指定的初始化程序来初始化 C99 中的结构 如下所示 typedef struct char a char b int c MyStruct MyStruct s a 1 b 2 c 3 该代码在我的 C 编译器中不起作用
  • 根据另一列的值是否在另一个数据帧的列中更新值

    假设我正在向一班学生教 Java 而一位同事正在教他们数学 前几天班级考试了 下面是java的成绩 data 0110200026 50 0110200057 55 0110200079 80 df pd DataFrame data co
  • MATLAB 中的贝叶斯网络

    有没有例子或者工具箱MATLAB我可以在哪里应用贝叶斯网络 我正在解决一个有 8 个变量的问题 但不知道如何开始 有人依赖于某些变量 有的是贝叶斯网络工具箱可通过 Google 代码获取 并附有介绍和示例 希望这可以帮助
  • xhtml2pdf 在创建 pdf(html 到 pdf)时不应用 css

    转换 html template render context resultFile open filepath w b pdf pisa CreatePDF html encode utf 8 dest resultFile encodi
  • Android Publisher Google Console API 未返回评论列表

    基于谷歌文档 我正在调用端点来获取所有评论 如下所示 curl https androidpublisher googleapis com androidpublisher v3 applications com questionpro r
  • 使用node.js观察文件变化

    我有以下用例 A 创建聊天并邀请 B 和 C 在服务器上 A 创建 文件 A B 和 C 将消息写入此文件 A B C 读了这篇文章 文件 我想要在服务器上创建一个文件 并观察该文件 如果其他人向该文件写入内容 则使用 websockets
  • Pandas:如何根据另一列的值创建一列?

    我需要在数据框的末尾创建一个新列 其中该新列中的值是应用某些函数的结果 该函数的参数基于其他列 具体来说 来自另一列 但不同的行 例如 如果我的数据框有两列 包含值x i y i分别 我的第三栏是f x i 1 y i 1 我知道要创建一个
  • 哪些存储不完整类型的STL数据结构可以用作类成员?

    据我所知 从 C 17 开始 某些 STL 数据结构可能 存在 并且以不完整的类型作为描述存储类型的模板参数 例如 我可以使用std unique ptr
  • 在编译的pdf中的文档文本和knitr代码块之间添加空格

    我正在使用 RStudio 0 98 501 编译 Rnw将 R 代码块合并为 pdf 在生成的 PDF 中 文档文本和 R 代码块之间没有空格 我还没有遇到过任何knitr块或包选项 让我指定文本和代码块之间的垂直空间 我想在文本和代码块
  • 如何使用应用程序脚本获取有权访问 Google 共享云端硬盘的所有用户的列表

    我使用 getEditors 获取电子表格的编辑者列表 返回的列表包括共享云端硬盘用户 但是 对共享云端硬盘具有 内容管理员 访问权限的用户不包含在列表中 出现这种情况有什么原因吗 我还发现 getAccess 可用于获取特定用户对驱动器文