我有一个只有在特定单元格为空时才可见的按钮。如果单元格为空并按下按钮,则会向该特定单元格添加日期和时间。我的问题是,当时间已经过了凌晨4点时,是否有可能让按钮检查下面的1行,所以代替检查单元格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());
}
答案 0 :(得分:0)
你的示例代码中有一些错误和拼写错误,我设置了一个只使用一个服务器处理程序的新版本(不需要为每个按钮创建一个,因为它们都调用相同的处理函数)和一个客户端处理程序(出于同样的原因:对源代码产生相同的影响)。
然后你忘记增加行并在每次迭代后将enable重置为false。
我使用简单的getHours()javascript方法添加了日期比较(参见doc on date object here)
这是完整的代码,我希望它足够清楚......如果没有,请不要犹豫再回到这里。
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());
}