javascript - 在表单上实时显示值 - 应用脚本
问题描述
我需要有关网络应用程序表单的帮助。我面临如何在 webapp 表单上实时显示价值的问题。我正确的 code.gs 但我无法创建用于运行函数间隔级别的 javascript。
请帮助我。
function getTime(){
const ss =SpreadsheetApp.getActiveSpreadsheet()
const wsData = ss.getSheetByName("Run")
const emp = [Session.getActiveUser().getEmail()];
const now = new Date();
const d= wsData.getDataRange().getDisplayValues().reverse();
const emp_i = d.findIndex(r => r[1] === emp.toString());
if (emp_i == -1 && d[emp_i][4] == "");
const hour = new Date(now - new Date(d[emp_i][3])).toISOString().substr(11,8 );
return hour;
}
var Duration = [getTime()];
<label for="Duration">Last Activity Duration</label>
<select class="w3-select" id="Duration">
<? for(let i=0;i<Duration.length;i++){ ?>
<option>
<?= Duration[i]; ?>
</option>
<? }?>
</select>
</div>
解决方案
如果要实时检索日期,则必须在客户端处理所有内容并使用服务器端发出请求,类似于以下内容:
代码.gs
function doGet(e) {
return HtmlService.createHtmlOutputFromFile('html');
}
html.html
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<p id="time"></p>
<body>
<script>
var timeDisplay = document.getElementById("time");
function getTime() {
var dateString = new Date().toLocaleString("ZONE", {timeZone: "YOUR_TIMEZONE"});
var formattedString = dateString.replace(", ", " - ");
timeDisplay.innerHTML = formattedString;
}
setInterval(getTime, 1000);
</script>
</body>
</html>
但是,如果您只想从 Apps 脚本代码中调用该函数,则应将客户端代码更新为:
<script>
for (let i = 0; i < length; i++) {
google.script.run.getTime();
}
</script>
与 Apps 脚本函数的通信是通过使用google.script.run
. 这是一个异步客户端 JavaScript API,它允许 HTML 服务页面调用服务器端函数。
参考
推荐阅读
- python - Django 3.2 LookupError:模型未注册
- python - Django AttributeError:'Cart' 对象没有属性'get'
- string - 如何在包含 &'static str 的结构上实现 serde::Deserialize?
- sql - 使用环境变量时访问被拒绝错误
- rust - 如何在 Rust 中获得一个简单的可变线程局部结构?
- r - 重建Fama-French,SMB,将条目添加到R中的不同数据框
- javascript - 为什么 Javascript 文件链接在我的主 HTML 页面中不起作用?
- reporting-services - 如何将计算字段从共享数据集中复制到嵌入数据集中
- regex - 正则表达式 - 仅当一个 OR 项目匹配时才包含空格
- web - 子域“WWW”和“m”之间的区别