我编写了一个代码,可以将文件夹的文件复制并粘贴到其他文件夹,并且该文件与其他人共享,这些人可以编辑或查看文件。
我需要将副本和权限复制到新文件时,这不会向编辑者和查看者发送电子邮件通知。
您使用的第一个代码是这样的:
var PeopleToEdit = file.getEditors();
var PeopleToView = file.getViewers();
for (var i=0 ; i < PeopleToEdit.length; i++){
newFile.addEditor(PeopleToEdit[i]);}
for (var i=0 ; i < PeopleToView.length; i++){
newFile.addViewer(PeopleToView[i]);}
但是,对于电子邮件的事情,我正在尝试这样做:
function addEditors(file1, file2){
var file = DriveApp.getFileById(file1);
var PeopleToEdit = file.getEditors();
for (var i=0 ; i < PeopleToEdit.length; i++){
Drive.Permissions.insert(
{
'role': 'writer',
'type': 'user',
'value': PeopleToEdit[i].getEmail()
},
file2,
{
'sendNotificationEmails': 'true'
});
在我的本地驱动器中可以工作,但是当我在共享驱动器中使用它时,显示此错误,我不知道会发生什么。
GoogleJsonResponseException:对drive.permissions.insert的API调用失败并出现错误:找不到文件:1-qsWWwWZI2f0phJW4AO_LLP5fLn2Ica_MhkUClM-s-E
为共享云端硬盘上的文件创建云端硬盘权限时,需要将参数
supportsAllDrives
设置为true
如果您不想发送通知,则需要将
sendNotificationEmails
设置为 false
样品请求:
Drive.Permissions.insert(
{
'role': 'writer',
'type': 'user',
'value': PeopleToEdit[i].getEmail()
},
file2,
{
'supportsAllDrives': true,
'sendNotificationEmails': false
});
2024年...
接受的答案有效,但您必须在 Apps 脚本的“服务”选项卡中选择 Drive API v2。
它无法与v3一起工作。即使您进行了细微的调整,例如将方法更改为 create
而不是
insert
,也不要在 v3 上浪费时间。
Drive.Permissions.create( { 'role': 'writer', 'type': 'user', 'emailaddress': '[email protected]' }, file‐id, { 'supportsAllDrives': true, 'sendNotificationEmails': false });
https://developers.google.com/drive/api/guides/manage-sharing