Reputation: 541
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
Upvotes: 19
Views: 12881
Reputation: 24
Another update, I found a way to stop notifications with Drive API V3.
Bellow is an example snippet:
const permission = {
'role': 'writer',
'type': 'group',
'emailAddress': email
};
// Insert permission using the Drive API v3
const result = Drive.Permissions.create(permission, folderId, {
'supportsAllDrives': true, // enable, if the folder is on a shared drive
'sendNotificationEmail': false // Suppress email notifications
});
Upvotes: -1
Reputation: 585
Another option would be to use the Drive advanced service v2 (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': '[email protected]'
},
fileId,
{
'sendNotificationEmails': 'false'
});
Upvotes: 21
Reputation: 5790
Just wanted to point that Rodrigo Chiong's answer is still correct in 2024 and it works as expected.
When selecting the v3, you notice some changes and think it's going to work, however, after making the minor adjustments it just never works and keeps sending the email notifications.
So, go for the v2 and you're safe.
Upvotes: 1
Reputation: 1103
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('[email protected]').addViewer('[email protected]')
SpreadSheetApp
var spreadSheet = SpreadsheetApp.openById('124144')
spreadSheet.addEditor('[email protected]').addViewer('[email protected]')
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.
Upvotes: 13
Reputation: 5526
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.
Upvotes: 1