如何使用appsScript仅限日期框限制可用的日期范围上个月的日期应该可供选择

时间:2014-08-25 05:53:44

标签: google-apps-script

如何使用appsScript仅限日期框限制可用日期范围最后一个月日期应该可以选择,例如:如果今天是25/08/2014,那么用户可以选择范围之间的日期 25/07 - 25/08。我正在使用UI服务

2 个答案:

答案 0 :(得分:0)

遗憾的是,无法选择dateBox的可用范围,也无法使用UiApp中的客户端处理程序检查日期值,您必须使用服务器处理函数来获取该功能。

以下是一个示例和相应的代码。

请注意,我没有限制最高日期值,但是在处理程序函数+适应Label警告消息的今天使用另一个条件将很容易实现,我更喜欢将示例保持为可读可能的。

test online

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;
}