【发布时间】:2020-11-26 23:27:09
【问题描述】:
我编写了一个 Google Apps 脚本函数,旨在共享 Google Drive 文件,但阻止收件人复制/下载/打印所述文件。
function shareFile(Id,addr,role,opt,msg){
var sendNotifications;
var fileId = Drive.Files.get(Id);
Logger.log('File "%s", restricted label was: %s', fileId.title, fileId.labels.restricted);
// cambia l'etichetta per limitare l'accesso (stampa, copia, scarica)
// changes the labels in order to restrict access
if(opt == 0) fileId.labels.restricted = true;
else fileId.labels.restricted = false;
// aggiorna le proprietà
// update labels
Drive.Files.update(fileId, Id);
// notifiche
// notifications
if(msg==="") sendNotifications='false';
else sendNotifications='true';
Drive.Permissions.insert(
{
'role': role,
'type': 'user',
'value': addr
},
Id,
{
'sendNotificationEmails': sendNotifications,
'emailMessage': msg
});
}
当没有向收件人发送通知时,我的函数似乎确实有效(最后一个参数为空,msg="")。 在这种情况下,该文件会出现在收件人 Google 云端硬盘的“与我共享”部分,他们唯一可能的操作是为其创建快捷方式。不允许下载、复制、打印、分享。
当 msg 不为空时,将向收件人发送电子邮件通知。问题是文档附加到电子邮件中,收件人可以下载它(并因此分发它)。 但是,如果从收件人 Google 云端硬盘的“与我共享”部分打开该文档,它似乎仍然受到限制。收件人无法下载、打印或复制。
我觉得这有点奇怪,但也许这是预期的行为。
原则上,我想通知收件人与他/她共享了一个文件,其中可能包括一个 Google 云端硬盘链接。将文档附加到电子邮件似乎违背了限制标签的目的。但我可能遗漏了一些东西,而且很可能我想要的东西可以用更干净的方式实现。
我做了一些研究,但结果更加困惑。 如果我做对了,this post Tanaike 说“labels.restricted”已被弃用。 这可能是我的脚本失败的原因(假设它实际上失败了)吗? 我仍然不太了解 Tanaike 的解决方法。
非常感谢您的任何见解 弗朗切斯科
【问题讨论】:
-
首先,我深表歉意,我的回答对您的情况没有用处。我有 3 个问题。 1.在你的脚本中,我可以问你
role的值吗? 2.如果role是writer,那么即使copyRequiresWriterPermission是true,似乎也可以下载和复制Document。这与The problem is that the document is attached to the email and the recipient can download it (and hence distribute it).有关吗? 3.当我看到通知邮件时,可以创建一个快捷方式。但似乎无法通过电子邮件进行下载。这个怎么样? -
你好田池。我的意思是您的解决方案太先进了,我现在无法理解。我其实是打算学的。 .
-
感谢您的回复。我可以问你我的 3 个问题吗?
-
我对这样一个事实感到好奇,显然,包含一条消息会破坏文件的限制。另外,你是对的,我忘了提到收件人的角色是什么。由于他们只应该查看文档,而不是以任何方式分发它,因此我将角色设置为“读者”。剩下的参数应该很明显了:addr 是地址,opt=0 就是限制文件。我不明白你的第 3 项,对不起。
-
感谢您的回复。大约3,当看到通知邮件中的Google Docs,就可以创建快捷方式了。但是无法复制和下载 Google 文档。我想问一下你的情况是否和你一样。并且,当
reader设置为role时,在我的环境中,copyRequiresWriterPermission为true,即使发送通知邮件也无法进行复制和下载。这个怎么样?
标签: google-apps-script google-drive-api sharing