按钮上的时间戳谷歌电子表格

time stamp on a button google spreadsheet

本文关键字:谷歌 电子表格 时间戳 按钮      更新时间:2023-09-26

我有一个按钮,只有在特定单元格为空时才可见。如果单元格为空并且按下了按钮,它将向该特定单元格添加日期和时间。我的问题是,是否有可能让按钮检查下面的1行,当时间已经过去了4点,所以在检查单元格B2的地方,它将检查B3这是我当前的代码:

    function doGet() {
  var ss = SpreadsheetApp.openById('key');
  var sheet = ss.getSheetByName('klant');
  var klant = sheet.getRange(2, 1, sheet.getLastRow()-1, 1).getValues();
  Logger.log(klant)

  var app = UiApp.createApplication().setTitle('Gym Check In');
  var grid = app.createFlexTable().setId('grid');
  app.add(grid);
  var row = 0;
  var column = 0;
  var enable=false;
  for (var m in klant) {    
    grid.setWidget(row, 0, app.createLabel(klant[m]));
    if(sheet.getRange('G2').getValue()==''){enable=true}
      grid.setWidget(row, 1, app.createButton('Check In').setEnabled(enable).setId(row+2).addClickHandler(app.createServerHandler('checkIn').addCallbackElement(grid)).addClickHandler(app.createClientHandler().forEventSource().setEnabled(false)));}
  if(!enable){grid.setWidget(row, 1, app.createHTML('<b>Error:</b>'));}
  return app;
}
function checkIn(e) {
  var ss = SpreadsheetApp.openById('key');
  var sheet = ss.getSheetByName('klant');
  var button = e.parameter.source;
  sheet.getRange(button, 7).setValue(new Date());
  sheet.getRange(button, 8).setValue(Session.getActiveUser());    
}

在您的示例代码中有一些错误和错别字,我已经设置了一个新版本,只使用一个服务器处理程序(不需要为每个按钮创建一个,因为它们都调用相同的处理程序函数)和一个客户端处理程序(出于相同的原因:对源的相同影响)。

然后您忘记在每次迭代后增加row并将enable重置为false。

我添加了日期比较也使用一个简单的getHours() javascript方法(见文档的日期对象在这里)

这里是完整的代码,我希望它足够清楚…如果没有,请不要犹豫,再来找我。

function doGet() {
  var ss = SpreadsheetApp.openById('1Zfs3LnVYx2JzaZvasdyQek6_FnqelO95VLrKH8gconA');
  var sheet = ss.getSheetByName('klant');
  var klant = sheet.getRange(1,1,sheet.getMaxRows(),sheet.getLastColumn()).getValues();
  var headers = klant.shift();
  Logger.log(headers);
  Logger.log(klant);
  var time = new Date().getHours();
  Logger.log(time);
  var app = UiApp.createApplication().setTitle('Gym Check In');
  var grid = app.createFlexTable().setId('grid').setStyleAttributes({'marginLeft':'60px'});
  app.add(grid);
  var row = 0;
  var column = 0;
  var enable=false;
  var handler = app.createServerHandler('checkIn').addCallbackElement(grid); 
  var cHandler = app.createClientHandler().forEventSource().setEnabled(false)
  for (var m=0 ; m<klant.length-1 ; m++) {  
    Logger.log('value in col 7 and row '+m+' = '+klant[m][6]);
    grid.setWidget(row, 0, app.createLabel(klant[m][0]));
    if(time<4){    
      if(klant[Number(m)+1][6]=='' ){enable=true}
    }else{
      Logger.log(Number(m)+1)
      if(klant[Number(m)+1][6]=='' ){enable=true}
    }
    grid.setWidget(row, 1, app.createButton('Check In').setEnabled(enable).setId(row+2).addClickHandler(handler).addClickHandler(cHandler));
    if(!enable){grid.setWidget(row, 1, app.createHTML('<b>Error:</b>'));}
    row++;
    enable=false;
  }
  return app;
}
function checkIn(e) {
  var ss = SpreadsheetApp.openById('1Zfs3LnVYx2JzaZvasdyQek6_FnqelO95VLrKH8gconA');
  var sheet = ss.getSheetByName('klant');
  var button = e.parameter.source;
  sheet.getRange(button, 7).setValue(new Date());
  sheet.getRange(button, 8).setValue(Session.getActiveUser());    
}