我尝试将活动电子表格的副本复制到特定文件夹,然后从复制的电子表格中删除所有编辑器并将自己保留为所有者。
这是我的代码:
//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;
}
一切正常但我在删除编辑器时遇到了问题。我总是遇到错误,但仍然使用与原始电子表格相同的编辑器。
答案 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();