Home > Mobile >  Google Drive API v3 Permissions sendNotificationEmail: False -Not Working
Google Drive API v3 Permissions sendNotificationEmail: False -Not Working

Time:02-11

I am utilizing the Permissions endpoint call of the Google Drive API v3 to assign reader and writer status to a folder within app scripts for a shared google drive. The main goal is to not send the notification email when the permission is shared with a user. I have included the parameter 'sendNotificationEmail: false' in the body of the request however the email is still being sent notifying the user. The code snippet that I am using is below. Am I including the 'sendNotificationEmail' parameter in the wrong part of the request?

if (currTabName == "Testing" && curRange.getColumn() == 2){
   for (var i = row; i < (row rows); i  ) {
     var Email = currSS.getRange(i,2,1,1).getValue();
     try{
      var url = 'https://www.googleapis.com/drive/v3/files/FileID/permissions';
      var data = {
        'role': 'writer',
        'type': 'user',
        'sendNotificationEmail': false,
        'emailAddress': Email,
        'supportsAllDrives': true,
      }
      var options = {
        'method'     : 'POST',
        'contentType': 'application/json',
        'headers'    : { Authorization: 'Bearer '   'yourAccessToken' },
        'payload'    : JSON.stringify(data) // Convert JavaScript object to JSON string
      };
      var response = UrlFetchApp.fetch(url, options);
      Logger.log(response);
     }
     catch(err) {
       Logger.log(err.message);

CodePudding user response:

At the method of Permissions: create of Drive API, sendNotificationEmail and supportsAllDrives are required to be included in the query parameter. I think that this is the reason for your issue. So how about the following modification?

From:

var url = 'https://www.googleapis.com/drive/v3/files/folderthatstatusisgrantedfor/permissions';
var data = {
  'role': 'writer',
  'type': 'user',
  'sendNotificationEmail': false,
  'emailAddress': Email,
  'supportsAllDrives': true,
}
var options = {
  'method'     : 'POST',
  'contentType': 'application/json',
  'headers'    : { Authorization: 'Bearer '   'yourAccessToken' },
  'payload'    : JSON.stringify(data) // Convert JavaScript object to JSON string
};
var response = UrlFetchApp.fetch(url, options);

To:

var folderId = "###"; // Please set the folder ID.

var url = `https://www.googleapis.com/drive/v3/files/${folderId}/permissions`;
url  = "?sendNotificationEmail=false&supportsAllDrives=true";
var data = {
  'role': 'writer',
  'type': 'user',
  'emailAddress': Email,
}
var options = {
  'method': 'POST',
  'contentType': 'application/json',
  'headers': { Authorization: 'Bearer '   'yourAccessToken' },
  'payload': JSON.stringify(data)
};
var response = UrlFetchApp.fetch(url, options);

Reference:

  • Related