共享文件时不要发送通知

问题描述 投票:0回答:3

我编写了一个代码,可以将文件夹的文件复制并粘贴到其他文件夹,并且该文件与其他人共享,这些人可以编辑或查看文件。

我需要将副本和权限复制到新文件时,这不会向编辑者和查看者发送电子邮件通知。

您使用的第一个代码是这样的:

  var PeopleToEdit = file.getEditors();
  var PeopleToView = file.getViewers();
      for (var i=0 ; i < PeopleToEdit.length; i++){
      newFile.addEditor(PeopleToEdit[i]);}
      for (var i=0 ; i < PeopleToView.length; i++){
      newFile.addViewer(PeopleToView[i]);}

但是,对于电子邮件的事情,我正在尝试这样做:

function addEditors(file1, file2){
var file = DriveApp.getFileById(file1);
var PeopleToEdit = file.getEditors();
for (var i=0 ; i < PeopleToEdit.length; i++){
       
 Drive.Permissions.insert(
  {
   'role': 'writer',
   'type': 'user',
   'value': PeopleToEdit[i].getEmail()
  },
  file2,
  {
   'sendNotificationEmails': 'true'
  });

在我的本地驱动器中可以工作,但是当我在共享驱动器中使用它时,显示此错误,我不知道会发生什么。

GoogleJsonResponseException:对drive.permissions.insert的API调用失败并出现错误:找不到文件:1-qsWWwWZI2f0phJW4AO_LLP5fLn2Ica_MhkUClM-s-E

google-apps-script google-drive-api
3个回答
2
投票

有两件事

  1. 为共享云端硬盘上的文件创建云端硬盘权限时,需要将参数

    supportsAllDrives
    设置为
    true

  2. 如果您不想发送通知,则需要将

    sendNotificationEmails
    设置为
    false

样品请求:

Drive.Permissions.insert(
  {
   'role': 'writer',
   'type': 'user',
   'value': PeopleToEdit[i].getEmail()
  },
  file2,
  {
   'supportsAllDrives': true, 
   'sendNotificationEmails': false
  });

0
投票

2024年...

接受的答案有效,但您必须在 Apps 脚本的“服务”选项卡中选择 Drive API v2

它无法与v3一起工作。即使您进行了细微的调整,例如将方法更改为 create

 而不是 
insert
,也不要在 v3 上浪费时间。


0
投票
对于 v3,您可以使用

Drive.Permissions.create( { 'role': 'writer', 'type': 'user', 'emailaddress': '[email protected]' }, file‐id, { 'supportsAllDrives': true, 'sendNotificationEmails': false });


Google 文档 -

https://developers.google.com/drive/api/guides/manage-sharing

© www.soinside.com 2019 - 2024. All rights reserved.