将电子表格复制到特定文件夹并从副本中删除查看器

时间:2015-04-17 12:08:45

标签: google-apps-script google-sheets

我尝试将活动电子表格的副本复制到特定文件夹,然后从复制的电子表格中删除所有编辑器并将自己保留为所有者。

这是我的代码:

//Save Spreadsheet in selected folder 

function freezeSS(vname,option) {

if (vname != ""){


var mainSs =           SpreadsheetApp.getActiveSpreadsheet();
var SSID =             mainSs.getId();
var CopyDate =         Utilities.formatDate(new Date(), "GMT-3", "dd/MM/yy-HH:mm"); // Function Date + Format
var file =             DriveApp.getFileById(SSID);


if (option == "Public") {
    var folder = DriveApp.getFolderById("0B_EpGZ420rEUfk1mZ2Z3RmFKUk9xaGd1bm1CdGhmZ0FCbTdVT2p2MUlJY3NZUTV0MTR0LTQ");
    file.makeCopy(vname + "_" + CopyDate, folder);
}

else {

    var folder =       DriveApp.getFolderById("0B_EpGZ420rEUfk9jTl81NXNVOXNhRDF2N2R4c1FGTW9wQTB5Q3dNS25nd1NEejBTWWd1RFk");
    var backup =       file.makeCopy(vname + "_" + CopyDate, folder);
    var editors =      backup.getEditors().getEmail();
    Logger.log(editors);
    var permision =    backup.removeEditor(editors);

} 
} return false;
}

一切正常但我在删除编辑器时遇到了问题。我总是遇到错误,但仍然使用与原始电子表格相同的编辑器。

1 个答案:

答案 0 :(得分:0)

正如文档所述,removeEditor()有两个选项:

removeEditor(user)

removeEditor(emailAddress)

你没有使用,你需要在没有getEmail()的情况下在getEditors()中创建一个循环,这个循环也会进入循环,如下所示:

var editors =      backup.getEditors();
for( i in editors ){
  var email = editors[i].getEmail();
  var permision = backup.removeEditor(email);
}

或更短:

var editors = backup.getEditors();
    for( i in editors )
      var permision = backup.removeEditor(editors[i]);
顺便说一句,这是有据可查的,ctrl + c ctrl + v从那里几乎可以解决你的问题,请花一点时间来摆弄它。

https://developers.google.com/apps-script/reference/drive/user#getEmail();