时间戳功能在一个位置有效,但在另一位置无效(12小时时差)

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

此问题与此 Google 表格相关:https://docs.google.com/spreadsheets/d/1qjxXnGGeEvYZVEzN34RETWiW4Kt01C_LdEGhX2SUIeQ

我们创建了一个小型任务跟踪表,在任务开始和结束时添加时间戳。

脚本

function onEdit() {   
  var s = SpreadsheetApp.getActiveSheet();
  if( s.getName() == "Rep" ) { 
  var r = s.getActiveCell();       

  if( r.getColumn() == 1 ) { //This is for the checkbox in A for Timestamp in B
    var nextCell = r.offset(0, 1);
  if( r.getValue() === true)
    nextCell.setValue(new Date()).setNumberFormat("MM/dd/yyyy hh:mm");
    
  else nextCell.clearContent()
};  
    if( r.getColumn() == 9 ) { //This is for the checkbox in I for Timestamp in J
        var nextCell = r.offset(0, 1);
    if( r.getValue() === true)
    nextCell.setValue(new Date()).setNumberFormat("MM/dd/yyyy hh:mm");
    else nextCell.clearContent()
    };
    }
    }

虽然时间戳脚本在 B 列和 J 列中都适用于我(在美国东部时区),但 I 列中的复选框不会在 J 列中为我们在菲律宾的团队成员添加时间戳。我不确定这是本地问题还是与脚本有关。

如有任何帮助/建议,我们将不胜感激。

我们开发此任务/时间跟踪器作为计算特定客户和供应商完成特定任务的平均时间的方法,以便我们可以更好地规划增长。

我们在商业解决方案方面遇到的问题是,我无法找到一个可以让我们运行 2 个并发计时器的解决方案。我们的团队成员经常执行多项任务,即处理基于网络和聊天的任务,同时执行基于电话的任务。

谢谢!

欧因

我尝试在 .setNumberFormat("UTC -7 MM/dd/yyyy hh:mm") 中设置时区,但我认为我有格式问题

google-apps-script timestamp
1个回答
0
投票

J
在您的工作表中受到保护。由于该脚本在无法编辑范围的其他用户帐户下运行,因此该脚本失败。

我假设您保护了它以避免手动调整。您可以通过使用具有相同功能的可安装 onEdit 触发器来实现相同的结果。它将在安装它的人的帐户下运行,并且不受此权限问题的约束。

注意:任何工作表编辑者都可以编辑脚本并更改其行为。一些保障措施:

  1. 限制授权范围。这是解释如何显式设置 Apps 脚本范围 的帖子(免责声明:这是我的网站)。

  2. 对于偏执狂:部署应用程序脚本,并在创建触发器时使用已部署的版本。之后,即使编辑者更改了脚本,它也不会以您的权限运行。

© www.soinside.com 2019 - 2024. All rights reserved.