Share a Drive document without notifying user with

2019-01-17 22:22发布

I am creating a workflow process in Apps Script where a Doc is generated from a template and shared with various users for approval. The Script sends a customised email notifying a user that the document requires their approval but they also receive a second email at each stage in the process from the user whose Drive the document is stored in saying "User has shared a document with you". Is there any way of disabling these alerts? When you share a document manually from your Drive, there is a checkbox option that allows you to choose whether or not the user receives a notification. However, I cannot find a way to disable this notification with Apps Script.

I am using doc.addEditors(users) to share the document.

Many Thanks

3条回答
老娘就宠你
2楼-- · 2019-01-17 22:56

There is a simple solution if you are working with Google Docs or Google SpreadSheets. You can use DocumentApp or SpreadSheetApp to share your Docs or SpreadSheets without email notification:

DocumentApp

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

SpreadSheetApp

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

However, if you are working with documents that aren't Docs or SpreadSheets, you must share then using DriveApp and email notification will be send.

查看更多
姐就是有狂的资本
3楼-- · 2019-01-17 23:13

This isn't possible at the moment. More information about this topic can be found here: https://code.google.com/p/google-apps-script-issues/issues/detail?id=2829

A workaround suggested in the comments of the above issue is to use DocsList instead:

DocsList, SpreadsheetApp and DocumentApp have addEditor and addViewer methods that do not result in notification emails.

查看更多
家丑人穷心不美
4楼-- · 2019-01-17 23:18

Another option would be to use the Drive advanced service (which you should enable in the Resources menu in the Script Editor).

The code used should be

Drive.Permissions.insert(
   {
     'role': 'writer',
     'type': 'user',
     'value': 'bob@example.com'
   },
   fileId,
   {
     'sendNotificationEmails': 'false'
   });
查看更多
登录 后发表回答