Javascript 使用Google Apps脚本共享驱动器文档而不通知用户

Javascript 使用Google Apps脚本共享驱动器文档而不通知用户,javascript,google-apps-script,google-api,google-drive-api,google-apps,Javascript,Google Apps Script,Google Api,Google Drive Api,Google Apps,我正在应用程序脚本中创建一个工作流流程,其中从模板生成一个文档,并与多个用户共享以供审批。脚本会发送一封定制的电子邮件,通知用户该文档需要他们的批准,但在流程的每个阶段,他们也会从存储文档的驱动器的用户处收到第二封电子邮件,说“用户已与您共享文档”。有没有办法禁用这些警报?当您从驱动器手动共享文档时,有一个复选框选项允许您选择用户是否收到通知。但是,我无法找到使用应用程序脚本禁用此通知的方法 我正在使用doc.addeditor(用户)共享文档 非常感谢目前这是不可能的。有关此主题的更多信息,请

我正在应用程序脚本中创建一个工作流流程,其中从模板生成一个文档,并与多个用户共享以供审批。脚本会发送一封定制的电子邮件,通知用户该文档需要他们的批准,但在流程的每个阶段,他们也会从存储文档的驱动器的用户处收到第二封电子邮件,说“用户已与您共享文档”。有没有办法禁用这些警报?当您从驱动器手动共享文档时,有一个复选框选项允许您选择用户是否收到通知。但是,我无法找到使用应用程序脚本禁用此通知的方法

我正在使用
doc.addeditor(用户)
共享文档


非常感谢

目前这是不可能的。有关此主题的更多信息,请参见:

上述问题的评论中建议的解决方法是使用DocsList:

DocsList、SpreadsheetApp和DocumentApp都有addEditor和addViewer方法,不会产生通知电子邮件


另一个选项是使用驱动器高级服务(应该在脚本编辑器的“资源”菜单中启用该服务)

使用的代码应该是

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

如果您使用的是谷歌文档谷歌电子表格,则有一个简单的解决方案。您可以使用DocumentAppSpreadSheetApp在不发送电子邮件通知的情况下共享您的文档或电子表格:

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')
电子表格应用程序

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进行共享,并发送电子邮件通知。

检查:一个极好的解决方案。不幸的是,无法通过
DocumentApp
SpreadsheetApp
添加评论员。。。仅限
DriveApp
。我想,如果不发送电子邮件(当然,驱动器高级服务除外),就无法向驱动器中的内容添加评论员。此解决方案不再有效,通过
DocumentApp
SpreadsheetApp
共享将发送电子邮件。知道
fileId
应该是什么吗?如果我尝试
DriveApp.getFileById(“fileID”)
可以找到该文件,但是如果我尝试上面的代码,它会说
file not found
fileID
是打开文件时作为URL一部分出现的44个字符,但是我不认为
Drive.Permissions.insert
函数仍然有效available@alejandro如果启用,则驱动器.Permissions.insert()仍然可用。它不是标准的
DriveApp
服务的一部分。@请确保您首先有一个有效的
fileId
字符串。如果仍然存在问题,您可以尝试先获取文件
var file=DriveApp.getFileById(fileId)
,然后插入一个权限,将代码示例中的
fileId
替换为
file.getId()
。这非常有效,谢谢。我使用此代码共享驱动器上充满PDF的文件夹。关键字是驱动器;)