获取点击电子表格中

时间:2016-10-29 18:48:40

标签: google-apps-script google-sheets

我已将该按钮添加到电子表格中并将脚本分配给它。有没有办法确定点击它的用户的电子邮件?脚本编辑数据,因此onEdit触发器可能起作用,但此触发器设置的Session.getActiveUser().getEmail()功能无法识别用户。

谢谢

1 个答案:

答案 0 :(得分:4)

使用普通的Gmail帐户可以实现这一点!

我使用了一些保护功能,揭示了文档的用户和所有者,并且我将其存储在属性中以获得更好的性能。玩得开心!

function onEdit(e) {
  SpreadsheetApp.getUi().alert("User Email is " + getUserEmail());
}

function getUserEmail() {
  var userEmail = PropertiesService.getUserProperties().getProperty("userEmail");
  if(!userEmail) {
    var protection = SpreadsheetApp.getActive().getRange("A1").protect();
    // tric: the owner and user can not be removed
    protection.removeEditors(protection.getEditors());
    var editors = protection.getEditors();
    if(editors.length === 2) {
      var owner = SpreadsheetApp.getActive().getOwner();
      editors.splice(editors.indexOf(owner),1); // remove owner, take the user
    }
    userEmail = editors[0];
    protection.remove();
    // saving for better performance next run
    PropertiesService.getUserProperties().setProperty("userEmail",userEmail);
  }
  return userEmail;
}