Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Permissions 复制谷歌电子表格+;在脚本中与相同的用户共享_Permissions_Google Apps Script_Google Sheets_Google Docs - Fatal编程技术网

Permissions 复制谷歌电子表格+;在脚本中与相同的用户共享

Permissions 复制谷歌电子表格+;在脚本中与相同的用户共享,permissions,google-apps-script,google-sheets,google-docs,Permissions,Google Apps Script,Google Sheets,Google Docs,我已经在互联网上搜索了几天了,但似乎找不到解决我问题的办法。我对编程的知识有限,但如果我能让它工作起来,它会做很多很棒的事情 说明:我需要使用电子表格中的脚本制作模板电子表格的副本,并将模板的所有权限复制到副本中(特别是名称和保护范围)。我用的是蜘蛛片 现在,我可以创建模板的副本,但是SheetSpider似乎放弃了模板拥有的权限,并使用您在安装过程中定义的用户重写了这些权限。相反,我只想复制模板文件的权限。这似乎有点棘手,因为电子表格的常规副本仍然不会像在“文件”>“复制电子表格”中选中“与相

我已经在互联网上搜索了几天了,但似乎找不到解决我问题的办法。我对编程的知识有限,但如果我能让它工作起来,它会做很多很棒的事情

说明:我需要使用电子表格中的脚本制作模板电子表格的副本,并将模板的所有权限复制到副本中(特别是名称和保护范围)。我用的是蜘蛛片

现在,我可以创建模板的副本,但是SheetSpider似乎放弃了模板拥有的权限,并使用您在安装过程中定义的用户重写了这些权限。相反,我只想复制模板文件的权限。这似乎有点棘手,因为电子表格的常规副本仍然不会像在“文件”>“复制电子表格”中选中“与相同用户共享”复选框时那样,为名称和受保护范围设置带来权限,而该复选框会保留受保护范围设置

同样,我对编程的了解非常有限,但我想我已经指出了似乎要删除和重置权限的行。我已经试着玩下面的几天了,现在让它离开权限,但没有任何效果

任何帮助或指导都将不胜感激

谢谢

function checkFixFileACLs(file, approvedViewers, approvedEditors) {
  var viewers = file.getViewers().join(",");
  viewers = viewers.split(",");
  var editors = file.getEditors().join(",");
  editors = editors.split(",");
  viewers = arr_diff(editors, viewers);
  var owner = file.getOwner().toString();
  var fileKey = file.getId();
  var driveFile = DriveApp.getFileById(fileKey);
  var currViewers = [];
  for (var k=0; k<viewers.length; k++) {
    if ((viewers[k]!='')&&(approvedViewers.indexOf(viewers[k].toLowerCase())==-1)&&(approvedEditors.indexOf(viewers[k].toLowerCase())==-1)&&(viewers[k]!=owner)) {
      try {
        call(function() {driveFile.removeViewer(viewers[k].toLowerCase());});
      } catch(err) {
        Logger.log(err.message);
      }
    } else {
      currViewers.push(viewers[k].toLowerCase());
    }
  }
  for (var k=0; k<approvedViewers.length; k++) {
    if ((approvedViewers[k]!='')&&(approvedViewers[k])) {
      if (currViewers.indexOf(approvedViewers[k])==-1) {
        try {
          call(function() {driveFile.addViewer(approvedViewers[k].toLowerCase());});
        } catch(err) {
          Logger.log(err.message);
        }
      }
    }
  }
  var currEditors = [];
  for (var k=0; k<editors.length; k++) {
    if ((editors[k]!='')&&(approvedEditors.indexOf(editors[k].toLowerCase())==-1)&&(editors[k]!=owner)) {
      try {
        call(function() {driveFile.removeEditor(editors[k].toLowerCase());});
      } catch(err) {
        Logger.log(err.message);
      }
    } else {
      currEditors.push(editors[k].toLowerCase().replace(/\s+/g, ''));
    }
  }
  for (var k=0; k<approvedEditors.length; k++) {
    if ((approvedEditors[k]!='')&&(approvedEditors[k])) {
      if (currEditors.indexOf(approvedEditors[k].toLowerCase())==-1) {
        try {
          call(function() {driveFile.addEditor(approvedEditors[k].toLowerCase().replace(/\s+/g, ''));});
        } catch(err) {
          Logger.log(err.message);
        }
      }
    }
  }
  return;
}
函数checkFixFileACL(文件、ApprovedViewer、ApprovedEditor){
var viewers=file.getViewers().join(“,”);
viewers=viewers.split(“,”);
var editors=file.getEditors().join(“,”);
editors=editors.split(“,”);
查看器=arr_diff(编辑器、查看器);
var owner=file.getOwner().toString();
var fileKey=file.getId();
var driveFile=DriveApp.getFileById(fileKey);
var=[];

对于(var k=0;k这里是一个脚本,它将在运行时复制具有权限的电子表格。但是,它会将评论员变成查看器。这可以通过更多代码避免,但不是很容易,因为没有获取评论员的方法

function myFunction() {

  var file = DriveApp.getFileById(SpreadsheetApp.getActiveSpreadsheet().getId()).makeCopy();
  var editors = DriveApp.getFileById(SpreadsheetApp.getActiveSpreadsheet().getId()).getEditors();
  for (var i = 0; i<editors.length;i++) {
    file.addEditor(editors[i])
  }
  var viewers = DriveApp.getFileById(SpreadsheetApp.getActiveSpreadsheet().getId()).getViewers();
  for (var i = 0; i<viewers.length;i++) {
    file.addViewer(viewers[i])
  }
}
函数myFunction(){
var file=DriveApp.getFileById(SpreadsheetApp.getActiveSpreadsheet().getId()).makeCopy();
var editors=DriveApp.getFileById(SpreadsheetApp.getActiveSpreadsheet().getId()).getEditors();

对于(var i=0;i)错误的行在哪里?另外,如果您将一个文件移动到共享文件夹,它将自动与其他用户共享,您能利用这个事实吗?虽然这是很久以前的事了,但它是否得到了修复?