如何在开始使用电子表格之前请求信息,例如日期范围

时间:2013-01-28 17:40:05

标签: google-apps-script

在开始使用我的电子表格之前我需要请求信息这是一个日期范围,如果您不输入日期范围,则必须关闭电子表格。

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

您可以实现一个onOpen()函数,该函数会触发对话框的打开,只要用户没有输入您想要的日期范围,该对话框就会保持打开状态。如果没有输入任何值,我认为你不能强制关闭电子表格。

答案 1 :(得分:0)

您可以在使用UiApp的用户界面中执行此操作,只有在条件得到验证后才会显示指向电子表格的链接,否则会拒绝该请求。

编辑:以下是一个让您开始的示例:

(必须定义条件,我评论了必须由你完成的部分......

 function doGet() {
  var app = UiApp.createApplication().setStyleAttribute('padding', '15').setStyleAttribute('background', 'beige').setWidth('300').setHeight('140');// adjust dimensions to your needs  

  var mygrid = app.createGrid(3, 2);
  mygrid.setWidget(0, 0, app.createLabel('StartDate:'));
  mygrid.setWidget(0, 1, app.createDateBox().setId('dateA'));
  mygrid.setWidget(1, 0, app.createLabel('EndDtate:'));
  mygrid.setWidget(1, 1, app.createDateBox().setId('dateB'));

  var mybutton = app.createButton('OK');
  mybutton.setId("mybutton");
  var mypanel = app.createVerticalPanel();
  mypanel.setId('mypanel');
  mypanel.add(mygrid);
  var label = app.createHTML('<BR>Your request has been approved, <BR><BR>thanks for submitting').setId('Label').setStyleAttribute('padding', '15').setVisible(false).setWidth('300').setHeight('120');// adjust dimensions to your needs  
  var anchor = app.createAnchor('Open the Spreadsheet', 'https://docs.google.com/spreadsheet/ccc?key=0AnqSFd3iikE3dDljeXhtY3lacUtxdllQbGNHREY0VUE#gid=0').setId('anchor').setVisible(false)
  mypanel.add(label).add(anchor)
  mypanel.add(mybutton);
  app.add(mypanel).add(label);

  var handler = app.createServerHandler('checkDates');
  handler.addCallbackElement(mypanel);
  mybutton.addClickHandler(handler);
   var Chandler = app.createClientHandler();
   Chandler.forTargets(mygrid,mybutton).setVisible(false)
   mybutton.addClickHandler(Chandler)     
  return app;
}

function checkDates(e) {
  var app = UiApp.getActiveApplication();
  var Label = app.getElementById('Label');
  var anchor = app.getElementById('anchor');
  Label.setVisible(true);// show the masking label with message
  var dateA = e.parameter.dateA;
  var dateB = e.parameter.dateB;
// write your condition...  
//  if(dateA)...&& dateB== ...
  anchor.setVisible(true);
  return app
// }else{
app.close
//return app}
}