为什么 session.getActiveUser().getEmail( 函数对其他有权访问他们已接受权限的 google 表格的用户不起作用?

问题描述 投票:0回答:0

在下面的代码中,为什么只为 google 工作表的所有者工作,但当其他用户单击第 6 列中的单元格时,他们什么都不做,他们已接受许可并拥有正确的访问权限

function onSelectionChange(e) {
  var sheet = e.source.getActiveSheet();
  var range = e.range;
  var col = range.getColumn();
  var row = range.getRow();
  if (col == 6) {
    var name = sheet.getRange(row, 1).getValue();
    var phone = sheet.getRange(row, 6).getValue();
    var timestamp = new Date();
    var user = Session.getActiveUser().getEmail();
    var logSheet;
    if (user == "[email protected]") {
      logSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("b");
    } else if (user == "[email protected]") {
      logSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("a");
    } else {
      return;
    }
    var data = [name, phone, timestamp];
    logSheet.appendRow(data);
  }
}

似乎无法收到其他用户的电子邮件,即使他们同意了权限。 什么是解决这个问题?

我检查了触发器是否设置正确并且用户 2 具有对电子表格的编辑权限。
我在 onSelectionChange() 函数中添加了日志语句来诊断问题,但日志显示当 Ben 进行选择更改时该函数没有被触发。 我确认脚本在我(谷歌工作表的所有者)进行选择更改时有效,但在用户 2 进行选择更改时无效。 我尝试修改函数以使用 onEdit() 触发器而不是 onSelectionChange() 触发器,并使用 user2 帐户对其进行测试。但是,当 Ben 编辑第 6 列中的单元格时,该功能仍然不起作用。

javascript google-apps-script google-sheets user-permissions
© www.soinside.com 2019 - 2024. All rights reserved.