Google apps script 如何计算一个单元格具有特定颜色的时间?
我的谷歌工作表中有一个单元格,它可以根据文本改变颜色,并且每分钟都在刷新。我想要一个计时器来跟踪这个单元格是红色的分钟数 当颜色随着一天的变化而变化时,是否可以在每次单元格变红时求和(或将分钟相加)并获得每天的总值 我没有定时器的功能。 “时间”列中的信息通过xmlimport从网站中提取 这对我来说是一个全新的领域。如果不清楚,请告诉我。 感谢您的帮助收集单个单元格时间和颜色的JavaScript计时器 虽然这可能并不完全是你想要的,但我怀疑它包含了所有的组件,让你知道如何得到你想要的 datatimer.html 这是Javascript定时器,我已经为不同的事情使用了好几次,我将它调整为这个函数,以供您作为示例,帮助您实现您的目标Google apps script 如何计算一个单元格具有特定颜色的时间?,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我的谷歌工作表中有一个单元格,它可以根据文本改变颜色,并且每分钟都在刷新。我想要一个计时器来跟踪这个单元格是红色的分钟数 当颜色随着一天的变化而变化时,是否可以在每次单元格变红时求和(或将分钟相加)并获得每天的总值 我没有定时器的功能。 “时间”列中的信息通过xmlimport从网站中提取 这对我来说是一个全新的领域。如果不清楚,请告诉我。 感谢您的帮助收集单个单元格时间和颜色的JavaScript计时器 虽然这可能并不完全是你想要的,但我怀疑它包含了所有的组件,让你知道如何得到你想要的 dat
<!DOCTYPE html>
<html>
<head>
<base target="_top">
<link rel="stylesheet" href="https://ssl.gstatic.com/docs/script/css/add-ons1.css">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<style>
#my_block{border:2px solid black;background-color:rgba(0,150,255,0.2);padding:10px 10px 10px 10px;}
#conv_block{border: 1px solid black;padding:10px 10px 10px 10px;}
.bttn_block{padding:2px 5px 0px 0px;}
.sndr_block {border:1px solid rgba(0,150,0,0.5);background-color:rgba(150,150,0,0.2);margin-bottom:2px;}
</style>
</head>
<body>
<form>
<div id="my_block" class="block form-group">
<div class="sndr_block">
<div id="myClock" style="font-size:20px;font-weight:bold;"></div>
<br />Timer Duration(minutes):
<br /><input id="txt1" type="text" size="4" class="action"/>
<select id="sel1" onChange="loadTxt('sel1','txt1');">
</select>
<div id="cntdiv"></div>
<br /><strong>Timer Controls</strong>
<div class="bttn_block"><input type="button" value="Start" name="startShow" id="startShow" onClick="startmytimer();changeData();" class="red" /></div>
<div class="bttn_block"><input type="button" value="Stop" name="stopTimer" id="stopTimer" class="red" /></div>
<div class="bttn_block"><input type="button" value="Single Ping" name="changedata" id="chgData" class="red" onClick="changeData();" /></div>
<div class="bttn_block"><input type="button" value="Red" name="setA1Red" id="setRed" class="red" onClick="setA1('#ff0000');" /></div>
<div class="bttn_block"><input type="button" value="Green" name="setA1Green" id="setGreen" class="green" onClick="setA1('#00ff00');" /></div>
</div>
<div id="btn-bar">
<br /><input type="button" value="Exit" onClick="google.script.host.close();" class="green" />
</div>
</div>
</form>
<script>
var idx=1;
var myInterval='';
var cnt=0;
$(function() {
var select = document.getElementById('sel1');
select.options.length = 0;
for(var i=1;i<61;i++)
{
select.options[i-1] = new Option(i,i * 60000);
}
select.selectedIndex=0;
$('#startTimer').click(startmytimer);
$('#stopTimer').click(stopTimer);
$('#txt1').val(String(select.options[select.selectedIndex].value));
startTime();
});
function startTime(){
var today = new Date();
var h = today.getHours();
var m = today.getMinutes();
var s = today.getSeconds();
m = checkTime(m);
s = checkTime(s);
document.getElementById('myClock').innerHTML =
h + ":" + m + ":" + s;
var t = setTimeout(startTime, 500);
}
function checkTime(i){
if (i < 10) {i = "0" + i}; // add zero in front of numbers < 10
return i;
}
function startmytimer(){
document.getElementById('cntdiv').innerHTML='<strong>Timer Started:</strong> ' + document.getElementById('myClock').innerHTML;
myInterval=setInterval(changeData, Number($('#txt1').val()));
}
function stopTimer(){
document.getElementById('cntdiv').innerHTML='Timer Stopped';
clearInterval(myInterval);
}
function loadTxt(from,to){
document.getElementById(to).value = document.getElementById(from).value;
}
function exportData() {
google.script.run.saveData(cA);
}
function changeData(){
$('#txt1').css('background','#ffffcc');
google.script.run
.withSuccessHandler(function(rObj){
updateDisplay(rObj.timer);
saveData({timer:rObj.timer,color:rObj.color});
$('#txt1').css('background','#ffffff');
})
.changeData();
}
function updateDisplay(t){
$('#txt1').css('background','#ffffff');
document.getElementById('cntdiv').innerHTML='<strong>Timer Running:</strong> Count= ' + ++cnt + ' <strong>Time:</strong> ' + t;
}
function setA1(color) {
console.log(color);
google.script.run.setA1(color);
}
function saveData(dObj) {
google.script.run.saveData(dObj);
}
console.log('My Code');
</script>
</body>
</html>
侧栏中计时器模块的图像:
这只是一个小测试设置,每分钟检查单元格A1的颜色或选择任何内容。您可以随时启动计时器、停止计时器、执行单个ping。计时器调用一个名为changeData()的函数,该函数生成一个时间字符串并读取ColorChange的背景色!A1。它将该信息返回给客户端,并调用客户端函数将数据保存在名为“data”的工作表中
这就是数据表在几个样本和单个ping之后的样子
这是不可能回答的,因为我们不知道上下文。你说的是什么样的“细胞”?这是关于编程的吗?如果是,什么平台、语言等。。。?还是关于微软Excel?你是如何实现你当前的功能的?@AndreasRejbrand,这是一个谷歌表单。例如,当文本包含“20”时,单元格背景变为红色。我想数一数这个手机一天中有多少分钟是红色的。请结账。谢谢!我有10行要跟踪,这次我如何设置来记录每个位置(行)的背景单元格?好吧,你只需修改
changeData()
和saveData()
嗨,库珀,我刚刚开始这个主题。它会是:changeData(C1、C2、C3)?保存数据也一样吗?对所有这些问题感到抱歉。这对我来说是新的。谢谢你,库珀,我才刚开始做这个。它会是:changeData(C1、C2、C3)?保存数据也一样吗?对所有这些问题感到抱歉。这对我来说是新的。谢谢你需要弄清楚你想如何显示你的结果,以及在哪里可以得到你的数据。然后看看我是如何获得数据的,并找出如何修改代码以便获得数据的。因此,请分析我的代码并参考
function onOpen(){
SpreadsheetApp.getUi().createMenu('MyTools')
.addItem('Show Sidebar', 'showTimerSideBar')
.addToUi();
}
function showTimerSideBar()
{
var ui=HtmlService.createHtmlOutputFromFile('datatimer').setTitle('Exercise Timer');
SpreadsheetApp.getUi().showSidebar(ui);
}
function changeData(){
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('ColorChange');
var rg=sh.getRange('A1');
var color=rg.getBackground();
var n=new Date();
var tmr=Utilities.formatDate(n, Session.getScriptTimeZone(), "HH:mm:ss")
var rObj={color:color,timer:tmr};
ss.toast(Utilities.formatString('timer: %s color: %s', tmr,color));
return rObj;
}
function saveData(dObj) {
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('Data');
var lr=sh.getLastRow();
sh.getRange(lr+1,1).setValue(dObj.timer);
sh.getRange(lr+1,2).setBackground(dObj.color);
}
function setA1(color) {
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('ColorChange');
var rg=sh.getRange('A1');
rg.setBackground(color);
}