使用单元格中的电子邮件删除图纸中的“编辑访问权限”

Removing Edit Access from a Sheet using email from a cell

本文关键字:访问 编辑 访问权 权限 单元格 电子邮件 删除      更新时间:2023-09-26

我正试图找出如何使用谷歌应用程序脚本从电子表格中删除某人。

本质上,我有一个中央电子表格,上面有电子邮件、姓名、UID等信息。我正试图从这个电子表格中提取电子邮件,并使用removeEditor函数从另一个电子表格中删除该电子邮件。您可以查看下面的代码。

        var officerIDrow = officerID + 1;
    var Tracker = SpreadsheetApp.getActive().getSheetByName('P_Tracker'); //the button is on the same sheet as this, this is why it is get active.
    var PTBooking = SpreadsheetApp.openById("1JPS69ko99dQTEwjplF_l2l2G_T8RyHjxCyMxXd_AV_s"); //Referring to the other sheet where the email will be removed from editors.
    var EmailAddressRange = "F" + officerIDrow; //This is the column where the emails are stored. The officer ID row refers to the user inputted value in a dialog. Don't worry about this, I have already checked to see if this is the issue,
    var EmailAddress1 = Tracker.getRange(EmailAddressRange);
    var EmailAddress2 = EmailAddress1.getValue();
    var EmailAddress3 = Utilities.formatString(EmailAddress2); //In my desperation, I was trying to see if setting it as string would help.
    PTBooking.removeEditor(EmailAddress3);

这不是代码的完整版本。如果你想看,可以点击这里。但最重要的是,其他一切都很好。

上面的代码运行良好,直到到达试图删除电子邮件的最后一行。出现的错误消息显示:"无效电子邮件:"。我假设在"电子邮件:"部分之后,它应该显示已提取的内容。但事实并非如此!我不知道为什么它没有找到并使用电子邮件来删除用户。

有人能发现任何问题吗?

谢谢,

肖恩。

这个基本测试对我有效。它可以从电子表格中读取电子邮件地址,然后从外部工作表中删除编辑器。我试着复制你的例子,但我不知道officerDrow是如何工作的,但我认为它是一个数字。所以只存储了一个数字作为var

function myTest() {
var ss  = SpreadsheetApp.openById("ID HERE");
var idRow = 11;
var tracker = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("tracker");
var emailCell = "F"+idRow;
Logger.log(emailCell);
var emailAddress = tracker.getRange(emailCell).getValue();
Logger.log(emailAddress);
ss.removeEditor(emailAddress);
var editors = ss.getEditors();
Logger.log(editors);
}

我保留了Logger部分,因为它将帮助您了解脚本在每一点上所做的操作。

单元格中的电子邮件地址必须为纯文本,例如google@google.com