在 Google App Maker 中,如何更新标签以显示当前时间?

In Google App Maker, how do I update a label to show the current time?

如何更新 Google App Maker 中文本标签中显示的时间以显示当前时间?

我正在创建一个登录/退出信息亭,我想在屏幕上显示当前日期和时间,如此处所示。

日期和时间在标签的 "onAttach" 事件脚本中指定:

var options = {  
    weekday: "long", year: "numeric", month: "long",  
    day: "numeric", hour: "numeric", minute: "2-digit"  
};

var currentDateTime = new Date().toLocaleTimeString('en-US', options, {timeZone: 'America/New_York'});
widget.text = currentDateTime;

但是,此标签仅在页面加载时更新,并且没有事件选项可以定期 运行 脚本来更新时间。我希望有一个不需要服务器脚本或创建新数据源的解决方案,但是,这可能是必需的。

感谢任何帮助!

更新问题。

经过进一步研究,我看到其他人使用 SetInterval 来定期调用函数。我用 SetInterval 函数更新了我的脚本。这似乎有效,但是,我的研究还发现有些人认为 SetInterval 并不总是一个好的选择。目前我对它的了解还不够多,无法判断,但如果我了解更多,我会更新这个 post。

function getCurrentDateTime() {
  var options = {  
    weekday: "long", year: "numeric", month: "long",  
    day: "numeric", hour: "numeric", minute: "2-digit" 
};

var currentDateTime = new Date().toLocaleTimeString('en-US', options, {timeZone: 'America/New_York'});
widget.text = currentDateTime;
}
getCurrentDateTime();
var interval = setInterval(getCurrentDateTime, 60000);

感谢您确认使用 setInterval 是合适的。还要感谢有关清除用户离开页面时的间隔的提示。我想我有一个解决方案。我使用的方法是

  1. 为名为 setIntervalIDNumber
  2. 的页面定义自定义 属性
  3. 使用 onAttach 事件启动 setInterval 函数并 将 setInterval 编号存储在 setIntervalIDNumber 属性
  4. 通过引用清除setInterval函数 setIntervalIDNumber 属性

代码如下:

onAttach:

function getCurrentDateTime() {
  var options = {  
    weekday: "long", year: "numeric", month: "long",  
    day: "numeric", hour: "numeric", minute: "2-digit" 
};

var currentDateTime = new Date().toLocaleTimeString('en-US', options, {timeZone: 'America/New_York'});
widget.text = currentDateTime;
}
getCurrentDateTime();
widget.root.properties.setIntervalIDNumber = setInterval(getCurrentDateTime, 60000);

onDetach:

clearInterval(widget.root.properties.setIntervalIDNumber);

我认为这可能是最终的解决方案。