【问题标题】:Issues with Triggers on Google ScriptGoogle Script 上的触发器问题
【发布时间】:2015-11-18 18:53:44
【问题描述】:

我有以下功能,当我手动运行它时效果很好。

function LastUpdate() {
  var thisSS  = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = thisSS.getSheetByName('Roster');
  var data = Session.getActiveUser().getEmail();
  var Edit = 0;
  var time = TimeStamp();
  var Row;
  Row = findInColumn("L", data);
  Edit = checkEdits(Row);
  if (Edit == 1)
  {
    sheet.getRange(Row,20).setValue(time);
  }
}

我通过Resources -> Triggers手动设置了一个触发器,并选择了上面的Function来执行onEdit。基本上,每当编辑工作表中的单元格时,我想自动触发此功能执行。我不确定是什么问题!

任何帮助将不胜感激。

编辑 - 我试图这样做,这也不起作用

function onEdit(e)
{
LastUpdate ()
}

【问题讨论】:

  • 这不是minimal reproducible example,因为它依赖于TimeStamp()findInColumn()checkEdits(),您都没有提供。将您的代码缩减为演示问题所需的最小示例,然后edit 带有该问题的问题,并解释您如何调用触发器。有了这个,我们应该更容易为您提供帮助。
  • 嗨@Mogsdad 很抱歉,但你是对的。问题在于 var data = Session.getActiveUser().getEmail();行。

标签: javascript events google-apps-script triggers


【解决方案1】:

为什么不使用简单的 onEdit 触发器而不是已安装的触发器?由于您正在寻找活动用户进行的最新编辑,这可能是一个更容易、更快和更稳定的解决方案。

function onEdit(e){
  var range = e.range; //edited range

  range.getColumn();
  range.setValue(); 
  //etc

}

【讨论】:

  • 可以调用我在onedit函数中写的函数吗?
  • 简单触发器将无权调用Session.getActiveUser().getEmail();
  • 嗨@Mogsdad,是的,你是对的!我试图显示活动的用户数据,它是空白的。当我手动执行代码时,它似乎可以正确填充。我该如何解决这个问题?
  • 该用户手动运行脚本并同意Auth范围后,该用户被授权。即使您使用简单触发器,该用户的会话(和电子邮件)现在也应该可用。我不知道是否有一个简单的解决方法来授权用户,而无需该用户首先手动运行该功能。如果您想更好地控制用户的授权并从他们的配置文件中获取数据,您可以编写授权脚本。在这里阅读更多:github.com/googlesamples/apps-script-oauth2
猜你喜欢
  • 2023-03-03
  • 2021-12-10
  • 1970-01-01
  • 2020-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-08
  • 1970-01-01
相关资源
最近更新 更多