用Google Apps Script分享Drive文档而不通知用户

19

我正在使用Apps Script创建一个工作流程,该过程从模板生成文档并与各种用户共享以供批准。脚本会发送一封定制的电子邮件通知用户需要他们的批准,但他们还会在每个阶段收到来自存储该文档的用户的第二封电子邮件,内容为“User has shared a document with you”(用户已与您共享文档)。有没有办法关闭这些警报?当您手动从您的 Drive 共享文档时,有一个复选框选项,可以选择是否向用户发送通知。但是,我找不到用 Apps Script 禁用此通知的方法。

我正在使用doc.addEditors(users)来共享文档。

非常感谢


3个回答

22

另一个选项是使用Drive高级服务(您应该在脚本编辑器中的资源菜单中启用它)。

所使用的代码应为:

Drive.Permissions.insert(
   {
     'role': 'writer',
     'type': 'user',
     'value': 'bob@example.com'
   },
   fileId,
   {
     'sendNotificationEmails': 'false'
   });

有任何关于 fileId 应该是什么的想法吗?如果我尝试使用 DriveApp.getFileById("fileID"),我可以找到这个文件,但如果我尝试上面的代码,它会显示 File not found - IMTheNachoMan
1
fileId 是打开文件时出现在URL中的44个字符,但我认为 Drive.Permissions.insert 函数已不再可用。 - alejandro
2
@alejandro 如果您启用了高级驱动服务Drive.Permissions.insert()仍然可用。它不是标准的DriveApp服务的一部分。 - Rodrigo Chiong
1
@IMTheNachoMan 确保您首先拥有一个有效的 fileId 字符串。如果仍然有问题,您可以尝试先获取文件 var file = DriveApp.getFileById(fileId),然后将代码示例中的 fileId 替换为 file.getId(),以插入权限。 - Rodrigo Chiong
非常好,谢谢。我使用这段代码来分享驱动器上满是PDF的文件夹。关键词是“驱动器” ;) - Michael
@Michael 很高兴它对你有帮助 ;) - Rodrigo Chiong

13

如果您正在使用 Google Docs 或者 Google SpreadSheets,那么有一个简单的解决方案。您可以使用 DocumentApp 或者 SpreadSheetApp 来分享您的文档或表格,而无需通过电子邮件通知:

DocumentApp

var doc = DocumentApp.openById('124144')
doc.addEditor('example@mail.com').addViewer('example2@mail.com')

电子表格应用程序

var spreadSheet = SpreadsheetApp.openById('124144')
spreadSheet.addEditor('example@mail.com').addViewer('example2@mail.com')

然而,如果你要处理的文档不是文档或电子表格,你必须使用DriveApp共享它们,并且将发送电子邮件通知。


1
一个很好的解决方案。不幸的是,无法通过DocumentAppSpreadsheetApp添加评论者...只能通过DriveApp。我猜在Drive中添加评论者而不发送电子邮件是不可能的(当然,除了Drive高级服务)。 - xd1936
1
这个解决方案已经不再适用了,现在通过 DocumentAppSpreadsheetApp 进行共享会发送电子邮件。 - xd1936

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接