如何使用appsScript仅限日期框限制可用日期范围最后一个月日期应该可以选择,例如:如果今天是25/08/2014
,那么用户可以选择范围之间的日期 25/07 - 25/08
。我正在使用UI服务
答案 0 :(得分:0)
遗憾的是,无法选择dateBox的可用范围,也无法使用UiApp中的客户端处理程序检查日期值,您必须使用服务器处理函数来获取该功能。
以下是一个示例和相应的代码。
请注意,我没有限制最高日期值,但是在处理程序函数+适应Label警告消息的今天使用另一个条件将很容易实现,我更喜欢将示例保持为可读可能的。
function doGet() {
var app = UiApp.createApplication();
var p = app.createVerticalPanel().setStyleAttribute('padding','50px');
var oneMonthAgo = new Date(new Date().getTime()-31*86400000);
p.add(app.createLabel('Choose a date (later than '+Utilities.formatDate(oneMonthAgo,Session.getScriptTimeZone(),'MMM dd, yyyy ')+')'));
var dateHandler = app.createServerHandler('checkTime').addCallbackElement(p);
p.add(app.createDateBox().setName('date').setId('date').setValue(new Date()).addValueChangeHandler(dateHandler));
var btnHandler = app.createServerHandler('checkTime').addCallbackElement(p);
var btn = app.createButton('submit',btnHandler).setEnabled(false).setId('btn');
p.add(btn);
p.add(app.createLabel().setId('resp').setStyleAttribute('paddingTop','30px'));
app.add(p);
return app;
}
function checkTime(e){
var app = UiApp.getActiveApplication();
var date = e.parameter.date;
var oneMonthAgo = new Date().getTime()-31*86400000;
if(date.getTime()<oneMonthAgo){
app.getElementById('resp').setText('date must less than one month ago...');
return app;
}
if(e.parameter.source =='date'){
app.getElementById('resp').setText('date accepted with value '+date.toLocaleString());
app.getElementById('btn').setEnabled(true);
}else{
app.getElementById('resp').setText('request accepted.. continue the current job');
}
return app;
}
答案 1 :(得分:0)
而不是.createDateBox()
尝试只将有效日期放在列表框中......
function doGet() {
var app = UiApp.createApplication();
var listBox = app.createListBox(false).setId('date').setName('date');
var today = new Date();
for ( var i=0; i < 29; i++ ) {
var date = Utilities.formatDate(new Date(today.getTime() - i * 86400000), Session.getScriptTimeZone(), "dd-MM-yyyy");
listBox.addItem(date)
}
app.add(listBox);
return app;
}