Drive.Permissions.insert(值)-Drive API,您可以在“值”下使用数组吗?

2024-05-13

是否可以在此处使用“值”下的数组来阻止我创建组别名电子邮件地址?例如:

userValues = ["[email protected] /cdn-cgi/l/email-protection", "[email protected] /cdn-cgi/l/email-protection", "[email protected] /cdn-cgi/l/email-protection"];

Drive.Permissions.insert({
    'role': 'writer',
    'type': 'user',
    'value': ** userValues ** ,
  },
  folder, {
    'sendNotificationEmails': 'false'
  });

这是我的理解:

  • You want to give the permission to a file and folder using multiple email addresses.
    • 例如,您想使用类似的数组userValues = ["[email protected] /cdn-cgi/l/email-protection", "user2"@abc.com", "[email protected] /cdn-cgi/l/email-protection"];
  • 您希望使用 Google Apps 脚本来实现此目的。

问题和解决方法:

在现阶段,Drive.Permissions.insert()可以为一封电子邮件创建权限。不幸的是,无法通过一次调用使用多个电子邮件来创建权限Drive.Permissions.insert()。如果你想使用数组和Drive.Permissions.insert,现阶段需要运行Drive.Permissions.insert在 for 循环中。

作为解决方法,在这里,我想建议使用批量请求。使用批量请求时,一次API调用可以完成100个API调用,并且可以与异步进程一起运行。

模式一:

在此模式中,批处理请求使用 UrlFetchApp 运行。

示例脚本:

在运行脚本之前,请设置文件 ID 和电子邮件地址。如果要给文件夹添加权限,请将文件夹ID设置为### of const fileId = "###";.

function myFunction() {
  const fileId = "###";  // Please set the file ID.
  const userValues = ["[email protected] /cdn-cgi/l/email-protection", "user2"@abc.com", "[email protected] /cdn-cgi/l/email-protection"];  // Please set the email addresses.
  
  const resources = userValues.map(e => ({role: "writer", type: "user", emailAddress: e}));
  const boundary = "xxxxxxxxxx";
  const payload = resources.reduce((s, e, i) => {
    s += "Content-Type: application/http\r\n" +
      "Content-ID: " + i + "\r\n\r\n" +
      "POST https://www.googleapis.com/drive/v3/files/" + fileId + "/permissions?sendNotificationEmails=false" + "\r\n" +
      "Content-Type: application/json; charset=utf-8\r\n\r\n" +
      JSON.stringify(e) + "\r\n" +
      "--" + boundary + "\r\n";
    return s;
  }, "--" + boundary + "\r\n");
  const params = {
    method: "post",
    contentType: "multipart/mixed; boundary=" + boundary,
    payload: payload,
    headers: {Authorization: "Bearer " + ScriptApp.getOAuthToken()},
  };
  const res = UrlFetchApp.fetch("https://www.googleapis.com/batch", params);
  console.log(res.getContentText())
}

模式2:

在此模式中,使用用于批量请求的 Google Apps 脚本库。

示例脚本:

在运行脚本之前,请设置文件 ID 和电子邮件地址,并且请安装GAS库。 https://github.com/tanaikech/BatchRequest#how-to-install

function myFunction() {
  const fileId = "###";  // Please set the file ID.
  const userValues = ["[email protected] /cdn-cgi/l/email-protection", "user2"@abc.com", "[email protected] /cdn-cgi/l/email-protection"];  // Please set the email addresses.
  
  const reqs = userValues.map(e => ({
    method: "POST",
    endpoint: "https://www.googleapis.com/drive/v3/files/" + fileId + "/permissions?sendNotificationEmails=false",
    requestBody: {role: "writer", type: "user", emailAddress: e},
  }));
  const requests = {batchPath: "batch/drive/v3", requests: reqs};
  const res = BatchRequest.Do(requests);
  console.log(res.getContentText())
}

Note:

  • 请在脚本编辑器中启用 V8。
  • 在上面的脚本中,作为示例脚本,最大请求数为100。如果您想请求超过100,请修改上面的脚本。请小心这一点。

参考:

  • 批量请求 https://developers.google.com/drive/api/v3/batch
  • 权限:创建 https://developers.google.com/drive/api/v3/reference/permissions/create
  • GAS库的BatchRequest https://github.com/tanaikech/BatchRequest
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Drive.Permissions.insert(值)-Drive API,您可以在“值”下使用数组吗? 的相关文章

  • 自动递增 ID 号 Google Apps 脚本

    我想在向工作表添加新值时自动增加 ID 我尝试从当前的 ID 列表创建一个列表 但它只计数到 5 因此当自动递增时 它只会到达一个点并为每个输入保存该数字 以下是我尝试获取 ID 号列表的方法 但它没有获取整个列表 我缺少什么 var ss
  • 如何在运行脚本之前提交活动单元格中所做的更改? (Google 表格/Google Apps 脚本)

    我正在使用 Google Apps 脚本在 Google 表格中创建提交表单 该表单位于一页上 提交内容被移至第二个隐藏页面 当用户填写表单后 他们按下提交页面上的按钮以激活脚本 我遇到的问题是 当用户填写最后一个单元格然后单击按钮时 输入
  • 在网站上显示存储在 Google 云端硬盘中的文件(例如图像)

    我想知道是否可以在公共网站上访问 显示存储在 Google Drive 中的图像等文件 解决方法是获取fileId with Google Drive SDK API然后使用这个Url 文件ID 这将是您在 Google 云端硬盘中的文件
  • 有没有办法导入/导出容器绑定脚本

    我有一个插件 它使用 appscripts gs 以及 html js 和 css 文件 目前我们所做的是我们有一个参考 Google 文档 其中有一个脚本项目包含所有这些源代码 但是除了手动复制和粘贴之外 没有办法在 GIT 中保留源代码
  • Google App Script postMessage 与收件人窗口的来源不匹配

    我有一个 Google App 脚本部署为Web应用程序 https developers google com apps script guides web 它工作正常 直到今天晚上我发现它无法在 Firefox 或 Chrome 中加载
  • 将数据从一张纸复制到另一张纸的APP脚本

    我尝试使用此脚本将数据从一张工作表复制到另一张工作表 但是当我更新源工作表中的数据并运行脚本时 整个数据都会被复制 我只想将更新的数据复制到目标工作表而不重叠 谁能建议该怎么做 function copyPaste var ss Sprea
  • 如何发出HTTP请求将文件从reactjs上传到googledrive?

    我对文档有点困惑 我做了我的研究 资源很少 也许有人可以帮助我 我正在使用 CRNA create react app 我有一个按钮 可以使用 URI 将文件上传到 Google Drive 我已经有了 API 密钥 客户端 ID 启用 A
  • 向文档添加动态页眉/页脚

    我想知道是否有一种方法可以向文档添加动态页眉或页脚 即在页脚中添加每个页面都不同的 页面标题 据我所知 编辑内置页眉或页脚将反映在每个页面上 我想知道是否有人想到了一种解决方法 通过访问页面上的第一行 最后一行并在那里插入文本来 强制 它
  • 用于清除多个范围的 Google 脚本。

    我有许多电子表格 每周填写一次 并在新的一周开始时关闭 我编写了一个脚本来遍历并清除许多不同工作表中的各种范围 请参阅下面的代码 我的问题是有没有更好的方法来做到这一点 而不是必须一次清除一个部分的范围并拥有一百万个clearContent
  • Google Apps 脚本触发器 - 每当将新文件添加到文件夹时运行

    我想在任何时候执行谷歌应用程序脚本new文件被添加到特定文件夹 目前 我使用的是每 x 分钟运行一次的时钟触发器 但我只需要在向文件夹添加文件时运行脚本 有没有办法做到这一点 与this https stackoverflow com qu
  • Google 文档有内容控制吗?

    我对 Google 文档和内容控制有疑问 如果有的话 我们有一个系统 允许用户设计带有内容控件 rtf 文本 组合框等 的 MS Word 文档 并为控件分配一个 ID 以便我们的系统可以提取 ID 并注册答案 然后数据被保存在数据库中 什
  • Google Android Drive api 在已安装版本上登录失败

    我开发了一个使用 GoogleDrive api 的 Android 应用程序 当处于调试状态或运行调试版本时 应用程序 工作正常 并正确验证附加的谷歌帐户 等 当我构建发行版本时 使用我的签名密钥 并且 安装apk文件 当我运行时 Goo
  • Google Drive V3、Google API 客户端 2.0 - 批量上传失败

    使用 Google Drive V3 和 API v2 0 主分支进行批量上传失败 我已经修改了https github com google google api php client blob master examples batch
  • 在 Google Sheet 中打印每个 ID 的多个数据

    In this 电子表格 https docs google com spreadsheets d 1vHHLrLdQBRgTliO ZFmTUSTdkkWla8Lf982lG0MwJ0M edit usp sharing 我有一张名为表格
  • 如何使用 Google Apps 脚本添加指向电子表格单元格的链接

    可以通过用户界面向 Google 电子表格中的单元格添加 链接 我想使用 Google Apps 脚本执行相同的操作 我本以为 Range 类上有一种方法可以实现这一点 但看不到 有谁知道如何做到这一点 截至 2020 年 6 月 可以选择
  • 如何在公式中的 & 之间添加换行符以生成 QR URL

    我正在谷歌表格中创建一个电子表格 用于跟踪财产房间的库存 我使用二维码作为标签 将其放置在房产上 并将与该特定房产的相关信息相关联 我正在使用以下代码 image https chart googleapis com chart chs 2
  • Google 脚本过滤一个值的范围

    我想过滤第 1 列中仅包含 Bob 特定值的行的 google 工作表范围 到目前为止 我的代码允许我过滤out第 1 列中有 Bob 的行 我需要相反 我想返回第 1 列中只有 Bob 的行 因此 其中 filterSettings 不是
  • AdminDirectory.Members.list 授权错误

    我正在尝试使用 Admin SDK 并尝试在 Google 电子表格中列出群组成员 这是我想出的代码 function recordGroupsMembers var ss SpreadsheetApp getActiveSpreadshe
  • 使用 Google App Script 从一个电子表格跳转到另一个电子表格

    我有一个脚本 仅当我位于运行代码的当前工作表中时才有效 在 A1 中 我有一个复选框 其作用是刷新 api 请求 因此 我下面的代码单击复选框并获取新数据 所以我的代码的目的基本上是单击 A1 中的复选框 但是 运行此代码只会激活复选框 但
  • 列出 Google 云端硬盘上特定演示文稿/文档的所有共享用户

    我们需要一份完整的列表 列出已获得 Google 云端硬盘上特定演示文稿 文档的 共享 查看权限的人员 我们有屏幕截图 但可能还不够 我们如何以编程方式检索这些信息 附加到 a 的属性File对象包括三个与用户相关的项目 Owner 一个单

随机推荐