Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 如何计算一个单元格具有特定颜色的时间?_Google Apps Script_Google Sheets - Fatal编程技术网

Google apps script 如何计算一个单元格具有特定颜色的时间?

Google apps script 如何计算一个单元格具有特定颜色的时间?,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我的谷歌工作表中有一个单元格,它可以根据文本改变颜色,并且每分钟都在刷新。我想要一个计时器来跟踪这个单元格是红色的分钟数 当颜色随着一天的变化而变化时,是否可以在每次单元格变红时求和(或将分钟相加)并获得每天的总值 我没有定时器的功能。 “时间”列中的信息通过xmlimport从网站中提取 这对我来说是一个全新的领域。如果不清楚,请告诉我。 感谢您的帮助收集单个单元格时间和颜色的JavaScript计时器 虽然这可能并不完全是你想要的,但我怀疑它包含了所有的组件,让你知道如何得到你想要的 dat

我的谷歌工作表中有一个单元格,它可以根据文本改变颜色,并且每分钟都在刷新。我想要一个计时器来跟踪这个单元格是红色的分钟数

当颜色随着一天的变化而变化时,是否可以在每次单元格变红时求和(或将分钟相加)并获得每天的总值

我没有定时器的功能。 “时间”列中的信息通过xmlimport从网站中提取

这对我来说是一个全新的领域。如果不清楚,请告诉我。 感谢您的帮助

收集单个单元格时间和颜色的JavaScript计时器 虽然这可能并不完全是你想要的,但我怀疑它包含了所有的组件,让你知道如何得到你想要的

datatimer.html

这是Javascript定时器,我已经为不同的事情使用了好几次,我将它调整为这个函数,以供您作为示例,帮助您实现您的目标

<!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);
}