Google apps script 在共享文件夹中创建的文件上的Google apps脚本权限
我有一个脚本,可以在共享的Google Drive文件夹中创建一个文件,以下是脚本:Google apps script 在共享文件夹中创建的文件上的Google apps脚本权限,google-apps-script,permissions,google-drive-api,file-sharing,Google Apps Script,Permissions,Google Drive Api,File Sharing,我有一个脚本,可以在共享的Google Drive文件夹中创建一个文件,以下是脚本: var spr = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Klantenlijst'); var data = spr.getDataRange().getValues(); var klanNumbers = data; //some var declared before this piece of code var
var spr = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Klantenlijst');
var data = spr.getDataRange().getValues();
var klanNumbers = data; //some var declared before this piece of code
var file = DriveApp.createFile(fileName, JSON.stringify(klanNumbers));
这个文件需要经常更新,为此我删除了现有的文件并创建了一个新的文件来替换它(使用新数据)。问题是,当我尝试以文件所有者以外的用户身份执行setTrashed
操作时,会弹出以下错误:
您没有执行该操作的授权
关于如何解决这个问题有什么想法吗?:)
谢谢
编辑:我可以与其他用户一起手动删除驱动器中的文件。
我看过这篇文章,但我完全不同意这个问题“过于本地化”的结论。在谷歌上到处看看,你会发现同样的问题没有一个像样的解决方案
目前的解决办法:
- 重命名文件
- 将其移动到另一个文件夹
- 在旧文件夹中创建新文件
/**
*从用户驱动器中的视图中删除给定文件。
*如果用户是该文件的所有者,则该文件将被丢弃,
*否则,它将从所有用户文件夹中删除
*还有它们的根。请参阅removeFile()上的注释
*方法:
*
* https://developers.google.com/apps-script/reference/drive/drive-app#removeFile(档案)
*
*@param{File}File要丢弃或删除的文件对象。
*/
函数delete或remove(文件){
var myAccess=file.getAccess(Session.getActiveUser());
if(myAccess==DriveApp.Permission.OWNER){
//如果我拥有这个文件,就把它扔掉。
file.setTrashed(true);
}
否则{
//如果我不拥有该文件,请将其删除。
var parents=file.getParents();
while(parents.hasNext()){
//从当前文件夹中删除该文件。
parents.next().removeFile(文件);
}
//从用户驱动器的根目录中删除给定文件。
DriveApp.removeFile(文件);
}
}
例如:
功能测试\u deleteOrRemove(){
var files=DriveApp.getFilesByName('536998589.mp3');
while(files.hasNext()){
var file=files.next();
删除或删除(文件);
}
}
是的,你说得对。它不允许您在非所有者的位置丢弃文件。WRT手动删除文件(使用GUI丢弃文件):您实际上没有在该文件上设置垃圾标志,而是拒绝您的共享权限。(所有者仍然将您视为合作者,但该文件不再对您可见,即使在您的垃圾箱中也不可见。如果您有指向该文件的链接,例如在电子邮件中,您仍然可以访问该文件。)您可以尝试删除共享特权。我正要编写类似于mogsdad的内容。我最近还没有测试过,但我很确定,如果另一个编辑器破坏了这个文件,它不会像删除共享权限那样无害。我记得它也会从文件夹中删除文件,所有者只能在“所有文件”视图中找到它(或者在根目录中,但我认为它是无根的)。