按钮上的时间戳谷歌电子表格
time stamp on a button google spreadsheet
我有一个按钮,只有在特定单元格为空时才可见。如果单元格为空并且按下了按钮,它将向该特定单元格添加日期和时间。我的问题是,是否有可能让按钮检查下面的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());
}
相关文章:
- 使用外部数据创建仪表板(谷歌电子表格)-JavaScript
- 谷歌电子表格的自定义xml解析功能
- SIMPLE Javascript代码,用于显示谷歌电子表格中单个字段的数据
- 在谷歌电子表格中循环单元格
- 使用谷歌应用程序脚本制作基于谷歌电子表格的带有列表框的网络应用程序
- 如何通过悬停或点击谷歌电子表格中的单元格来运行自定义功能
- 如何使用谷歌脚本将html表单数据保存到谷歌电子表格中
- 在最初的查询/表格绘制中只提取谷歌电子表格的一列
- 谷歌电子表格脚本:如何保存“;永远”;
- 谷歌电子表格,脚本,备份文件,子文件夹
- 如何在谷歌电子表格脚本中测试范围参数的类型
- 谷歌电子表格API
- 使用公共谷歌电子表格(通过JavaScript)
- 在AngularJS应用程序中加载JSON(加载谷歌电子表格)
- 谷歌电子表格的 HTML 输入字段
- 如何使用谷歌应用程序脚本将3个谷歌电子表格中的特定行复制到另一个电子表格中
- 谷歌电子表格-删除范围保护时出错
- 如何根据单元格中的值将一行从一个谷歌电子表格移动到另一个
- 谷歌电子表格:为带有参数的按钮指定一个脚本
- 如何在谷歌电子表格中检查单元格的类型