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 是所有者
代码 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 是所有者