addViewer 与 class DriveApp 一起使用的方法总是将电子邮件发送给收件人。我可以禁用电子邮件吗?

addViewer the method used with the class DriveApp always sends the email to the recipient. Can I disable the email?

代码 A 和 B 做同样的事情,但如果 A 添加查看器,命令 addViewer 不会将电子邮件发送给 currentUser。相反,在案例 B 中,当添加查看器时,当前用户会收到一封文件共享电子邮件。

//CASE A
var f = DocsList.getFolderById(folder.getId());  
f.addViewer(currentUser);

//CASE B
var f = DriveApp.getFolderById(folder.getId());
f.addViewer(currentUser);

我想通过自动电子邮件分享,因为在程序结束时,如果程序成功完成,我将发送一封自定义电子邮件(文件在文件夹 link 中),否则我将删除该文件夹. 我能怎么做? DocList 将很快被弃用!!

如果您使用 Google 脚本共享文件,电子邮件通知将始终发送给查看者和编辑者。仅当您在 Google 云端硬盘中手动共享文件时,不发送该电子邮件的选项才可用。

为此,您需要使用 Drive API permissions.insert method [注意它不是 DriveApp] 静默插入权限。

Drive API is exposed to Google Apps Script through the Google Drive Advanced Service. To use it you'll need to enable it for your project.

完成后,您的许可插入代码可能如下所示:

/**
 * Insert a new permission without sending notification email.
 *
 * @param {String} fileId ID of the file to insert permission for.
 * @param {String} value User or group e-mail address, domain name or
 *                       {@code null} "default" type.
 * @param {String} type The value "user", "group", "domain" or "default".
 * @param {String} role The value "owner", "writer" or "reader".
 */
function insertSilentPermission(fileId, value, type, role) {
  var request = Drive.Permissions.insert({
    'value': value,
    'type': type,
    'role': role,
    'withLink': false
  },
  fileId,
  {
    'sendNotificationEmails': false
  });
}

我已编辑此答案以在下方包含 Laura 的反馈,因此它现在可以按预期工作。

该方法要求 "p" 大写:Drive.Permissions.insert 但是经过这个小东西,函数returns报错:

The numbers of arguments is invalid. Expected 2-3

我试过这个:

Drive.Permissions.insert(
{
  'role': 'reader',
  'type': 'user',
  'value': 'username@test.it'
},
fileId,  
{
  'sendNotificationEmails': 'false'
});

它工作正常,但仅适用于 FILE。对于 FOLDER(在 fileId 中我放了一个文件夹 ID)发生了一件奇怪的事情:

之前运行本次代码共享文件夹设置为:

  • 只与特定的人分享
  • 人@example.com 可以查看
  • admin@example.com 是所有者

运行后文件夹的代码共享设置变为:

  • example.com 中拥有 link 的任何人都可以查看 --> 这是错误的
  • 用户名@example.com可以查看-->这个可以
  • 人@example.com 可以查看
  • admin@example.com 是所有者