Google apps script var userMail=e.user.getEmail();在编辑谷歌表单时不拉邮件

Google apps script var userMail=e.user.getEmail();在编辑谷歌表单时不拉邮件,google-apps-script,Google Apps Script,我在谷歌的一张工作表上使用了以下脚本,已经运行了几个月,但现在大约在2020年3月5日星期四下午1:30左右,它停止了工作,并拉用户电子邮件。我尝试将其更改为第二次尝试,保存并编辑了单元格,但什么也没发生。 注意:由于法规原因,我无法共享该文件 之前的工作内容: function onEdit(e) { var rg = e.range; if (rg.getSheet().getName() == "Call Log" && rg.columnStart ==

我在谷歌的一张工作表上使用了以下脚本,已经运行了几个月,但现在大约在2020年3月5日星期四下午1:30左右,它停止了工作,并拉用户电子邮件。我尝试将其更改为第二次尝试,保存并编辑了单元格,但什么也没发生。 注意:由于法规原因,我无法共享该文件

之前的工作内容:

function onEdit(e) {
    var rg = e.range;
    if (rg.getSheet().getName() == "Call Log" && rg.columnStart == 13) {
        var nextCell = rg.offset(0, -3);
        if (nextCell.getValue() == '') {
            var userMail = e.user.getEmail();
            nextCell.setValue(userMail);
        }
    }
}
我的第二次尝试:

function onEdit(e) {
    var rg = e.range;
    if (rg.getSheet().getName() == "Call Log" && rg.columnStart == 24) {
        var nextCell = rg.offset(0, 3);
        if (nextCell.getValue() == '') {
            var email = Session.getActiveUser().getEmail();
            Logger.log(email);
            nextCell.setValue(userMail);
        }
    }
}
明确规定如下:

如果安全策略不允许访问用户的身份,user.getEmail将返回一个空字符串。电子邮件地址可用的情况各不相同:例如,用户的电子邮件地址在任何允许脚本在未经该用户授权的情况下运行的上下文中都不可用,例如简单的OnOpen或onEdite触发器、Google Sheets中的自定义函数或部署为以我的身份执行的web应用,由开发者而非用户授权。但是,如果开发人员自己运行脚本或与用户属于同一个G套件域,则这些限制通常不适用。

明确说明以下内容:

如果安全策略不允许访问用户的身份,user.getEmail将返回一个空字符串。电子邮件地址可用的情况各不相同:例如,用户的电子邮件地址在任何允许脚本在未经该用户授权的情况下运行的上下文中都不可用,例如简单的OnOpen或onEdite触发器、Google Sheets中的自定义函数或部署为以我的身份执行的web应用,由开发者而非用户授权。但是,如果开发人员自己运行脚本或与用户属于同一个G套件域,则这些限制通常不适用。

Lara, 老实说,我从来没有使用过谷歌工作表功能。但看起来他们的API非常简单。基于错误


TypeError:无法读取未定义的第2行文件的属性“range” 代码

我可以假设您的函数不使用任何值。您应该从另一个对象检索范围。我发现一开始很好。看起来您首先必须使用var sheet=SpreadsheetApp.getActiveSheet获取工作表;然后仔细阅读

最有可能的结果是:

function onEdit(e) {
    var sheet = SpreadsheetApp.getActiveSheet();
    var range = sheet.getRange();
    if (sheet.getName() === "Call Log" && range.getColumn() === 24) {
        var nextCell = range.offset(0, 3);
        if (nextCell.getValue() === '') {
            var email = Session.getActiveUser().getEmail();
            Logger.log(email);
            nextCell.setValue(email);
        }
    }
}
但我不能测试这个解决方案。请尝试一下,或者按照您的意愿更新此内容。

Lara, 老实说,我从来没有使用过谷歌工作表功能。但看起来他们的API非常简单。基于错误


TypeError:无法读取未定义的第2行文件的属性“range” 代码

我可以假设您的函数不使用任何值。您应该从另一个对象检索范围。我发现一开始很好。看起来您首先必须使用var sheet=SpreadsheetApp.getActiveSheet获取工作表;然后仔细阅读

最有可能的结果是:

function onEdit(e) {
    var sheet = SpreadsheetApp.getActiveSheet();
    var range = sheet.getRange();
    if (sheet.getName() === "Call Log" && range.getColumn() === 24) {
        var nextCell = range.offset(0, 3);
        if (nextCell.getValue() === '') {
            var email = Session.getActiveUser().getEmail();
            Logger.log(email);
            nextCell.setValue(email);
        }
    }
}

但我不能测试这个解决方案。请尝试一下,或者按照您希望的方式更新它。

您有任何错误消息要与我们共享吗?TypeError:无法读取未定义行2的属性“range”,文件代码就是我得到的错误代码。听起来好像你试图在一个环境中运行函数,而这个环境没有提供脚本编辑器中的触发器事件对象,而且无法工作。我不是一个编码器,所以有人知道在编辑单元格时如何生成错误代码吗?我找不到错误,我得到了一个空白的sting。您有任何错误消息要与我们共享吗?TypeError:无法读取未定义的第2行的属性“range”,文件代码就是我得到的错误代码。听起来好像你试图在一个环境中运行函数,而这个环境没有提供脚本编辑器中的触发器事件对象,而且无法工作。我不是一个编码器,所以有人知道在编辑单元格时如何生成错误代码吗?我不能出错,我被一个空白的刺痛了。谢谢你的帮助。这对我帮助很大。我正在读。我尝试了此操作,但在选择run>onedit Exception时出错:参数与SpreadsheetApp.Sheet.getRange的方法签名不匹配。第三行,文件代码谢谢你的帮助。这对我帮助很大。我正在读。我尝试了此操作,但在选择run>onedit Exception时出错:参数与SpreadsheetApp.Sheet.getRange的方法签名不匹配。第3行,文件代码我和所有用户都是同一个G套件域,但ti仍然不工作。所以我不确定我应该做些什么,也许问题在于新的V8运行时。尝试切换回上一个运行时。谢谢!我和所有用户都是同一个G套件域,但ti仍然不工作。所以我不确定我应该做些什么,也许问题在于新的V8运行时。尝试切换回上一个运行时。谢谢!已解决将其更改回上一个小矮人的问题 输入法。