繁体   English   中英

Google表格脚本可为特定单元格添加时间

[英]Google Sheet Script To Add Time To Specific Cell

我需要有关脚本的帮助,该脚本会将时间值添加到包含时间值的特定单元格中。 例如,单元格A1包含一个类似于09:30的时间值。 然后,当脚本运行时,它将在A1中增加30分钟的时间,因此该时间为10:00。

感谢帮助。

编辑:下面是我当前的代码

function modifyCell(cellName, increase) {
  var range = SpreadsheetApp.getActiveSheet().getRange(cellName)
  var AddTime = -30;
  if (increase) {
    AddTime = 30;
  }
  range.setValue(range.getValue() + AddTime);
}

function increaseLine2() {
  modifyCell("C5", true);
}

function decreaseLine2() {
  modifyCell("C5", false);
}

傻瓜数字时钟

这是一个数字时钟,它以Date()函数中的正确时间开始。 但是,在更新时,通过采用以前的datetime值并向其添加60 * 1000毫秒,并使用新值(而不是使用可用的实际值)格式化日期来增加60秒的时间。 因此,它每分钟仅更改一次。 它还为您创建和管理一分钟计时器。

function digitalClockMenu(){
  SpreadsheetApp.getUi().createMenu('Clock Tools')
     .addItem('Start Clock', 'startDigitalClock')
     .addItem('Stop Clock', 'stopDigitalClock')
     .addToUi();
}

function startDigitalClock() {
  if(!isTrigger('addMinute')){
    ScriptApp.newTrigger('addMinute').timeBased().everyMinutes(1).create();
  }
  SpreadsheetApp.getActive().getSheetByName('ClockSheet').getRange('A2').clearFormat().setValue('');
  SpreadsheetApp.getActive().getSheetByName('ClockSheet').getRange('A1').setValue('Starting');
}

function initialTime(){
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('ClockSheet');
  sh.getRange('A2').setValue(Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "HH:mm:ss"));
  sh.getRange('A1').setValue('Running');
}

function addMinute(){
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('ClockSheet');
  var v=sh.getRange('A2').getValue();
  if(v){
    var old=new Date(v).valueOf();
    var minute=60*1000;
    sh.getRange('A2').setValue(Utilities.formatString(Utilities.formatDate(new Date(old + minute), Session.getScriptTimeZone(), "HH:mm:ss")));
  }else{
    initialTime();
  }
}

function stopDigitalClock(){
  deleteTrigger('addMinute');
  SpreadsheetApp.getActive().getSheetByName('ClockSheet').getRange('A1').setValue('Stopped');
}  


function isTrigger(funcName)
{
  var r=false;
  if(funcName)
  {
    var allTriggers=ScriptApp.getProjectTriggers();
    var allHandlers=[];
    for(var i=0;i<allTriggers.length;i++)
    {
      allHandlers.push(allTriggers[i].getHandlerFunction());
    }
    if(allHandlers.indexOf(funcName)>-1)
    {
      r=true;
    }
  }
  return r;
}

function deleteTrigger(funcName)
{
  var triggers=ScriptApp.getProjectTriggers();
  for(var i=0;i<triggers.length;i++)
  {
    if(funcName==triggers[i].getHandlerFunction())
    {
      ScriptApp.deleteTrigger(triggers[i]);
      break;
    }
  }

}

它可以满足您的要求,再加上一点点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM