Google apps script 修改某些电子表格时实时更新html内容

Google apps script 修改某些电子表格时实时更新html内容,google-apps-script,google-sheets,Google Apps Script,Google Sheets,当电子表格发生变化时,是否有办法更新div内容? 我要找的就像聊天室和WebSocket,所以不需要更新和超时 HTML文件: <div id="thediv"></div> google.script.run.withSuccessHandler(showChange).setChangefromSpreadsheet(); function showChange(e){ $('#thediv').html(e); //of course jQuery called }

当电子表格发生变化时,是否有办法更新div内容? 我要找的就像聊天室和WebSocket,所以不需要更新和超时

HTML文件:

<div id="thediv"></div>
google.script.run.withSuccessHandler(showChange).setChangefromSpreadsheet();
function showChange(e){
$('#thediv').html(e); //of course jQuery called
}
这将在超时情况下工作,如 (在html文件中): 编辑为设置间隔:

setInterval(function(){google.script.run
        .withSuccessHandler(showChange).setChangefromSpreadsheet()}, 1000); //for example
有没有什么方法可以在没有任何超时的情况下做到这一点


感谢您的帮助

不幸的是,您所寻找的是不可能的。你正在寻找某种“触发器”,每当电子表格编辑发生时,谷歌应用程序就会向你的网页发送一条消息

从技术上讲,唯一的解决方法是你试图避免的:让你的网页每x秒检查一次。顺便说一句,如果希望它每x秒运行一次,而不是只运行一次,那么应该使用
setInterval()
,而不是
setTimeout()

我明白为什么这看起来很难看。但是如果处理得足够好,在这种情况下,
setInterval()
确实没有什么问题。如果它的运行频率低于每秒一次,你肯定不会受到谷歌的限制(我认为你可以一次运行6次回谷歌的电话,这对你正在做的事情来说已经足够了)


或者,根据您的应用程序,您还可以有一个“刷新”按钮供用户单击。不确定这是否适用于您的情况,但从技术上讲,这也是一种选择。

原因在于通话的可能限制和良好做法(我认为)。我相信我不会受到限制,但是。。。应用程序的性能(例如在手机上)可能会因为这种呼叫(超时)而丢失。您可以设置一个字段作为标志。它可以设置为新的或旧的。然后,您可以在div中以{{$flag}的形式访问它。您可以使用带有{{$flag}的css。这将帮助你得到你的旧的和新的div。这可以与通过触发器更新的电子表格结合使用。这是一个简短的描述。希望对你有帮助。嗨,谢谢你的回答。你很理解这个问题。我同意几乎所有的限制,除了谷歌的限制,因为在聊天的情况下,例如,每个登录的用户都会递归调用。如果我一次有200个用户使用该应用程序?我认为这可能是对GoogleApps脚本团队的一个建议,他们在默认情况下实现一个脚本,用服务器端建立一个websocket,或者实现一个API。我认为这对他们来说不是很困难(他们只是在驾驶中有它),可能性和性能会非常好。(编辑到setInterval)太棒了,我很高兴setInterval现在能为你工作!
setInterval(function(){google.script.run
        .withSuccessHandler(showChange).setChangefromSpreadsheet()}, 1000); //for example