1

我正在计划我儿子的第一个生日聚会。我住在夏威夷,所以当你邀请某人时,有时他们往往会带上他们的朋友、姐妹、堂兄弟、阿姨、叔叔、狗等......但由于我们为我儿子聚会预留的场地座位有限,我们不能只是让额外的人来。另外,我们按头/座支付。

话虽如此,我有一个客人名单的电子表格,并有一列我限制每个邀请的席位数量。我也想为每个邀请分配一个代码。

例如
姓氏 | 座椅 | 代码
系列 A | 3 个座位 | ABC123
家庭 B | 5个座位| DEF456

因此,如果我在邀请上放置一个二维码并为每个邀请/家庭提供他们的代码,

我希望谷歌表单允许每个收件人输入他们的代码,并让脚本使用他们输入的代码检查我的电子表格,以便表单知道收件人仅限保留多少个座位。

A家庭只能预订3个席位,B家庭只能预订5个席位。

有没有办法做到这一点?

4

1 回答 1

1

您不能在 Google 表单字段中输入代码,然后立即运行脚本函数。这样就无法检查另一个字段的验证了。只有在表单提交后才能回复回复,您才能检查这些值是什么。

如果您坚持使用单个 Google 表单,您可以编写一个脚本来监控提交并发送电子邮件或让他们知道他们预订了太多人(事后)。还可以编写一个脚本,为每个邀请创建一个单独的表单,该邀请已经将最大客人编程到下拉列表中。然后向每个邀请发送他们自己的表单 url。

另一种方法是使用 2 个 UI 服务中的一个来编写您自己的应用程序,该服务就像表单一样。在那里,您可以与用户输入和您想要的验证进行交互。UiApp 示例的开始...

var MAX = [];
MAX['123'] = [2];
MAX['456'] = [3];

function doGet() {
  var app = UiApp.createApplication();
  var panel = app.createVerticalPanel();
  var code = app.createTextBox().setId('code').setName('code');
  var guests = app.createTextBox().setId('guests').setName('guests');
  var submit = app.createButton('SUBMIT').setId('submit').setEnabled(false);
  var status = app.createLabel('', false).setId('status');

  var handler = app.createServerHandler('checkGuests').addCallbackElement(panel);
  guests.addValueChangeHandler(handler);

  handler = app.createServerHandler('submit').addCallbackElement(panel);
  submit.addClickHandler(handler);

  panel.add(code).add(guests).add(submit).add(status);
  app.add(panel);
  return app;
}

function checkGuests(e) {
  var app = UiApp.getActiveApplication();
  var code = e.parameter.code;
  var guests = e.parameter.guests;

  if (code == '' || code == undefined) { 
    app.getElementById('submit').setEnabled(false)
    app.getElementById('status').setText('Please enter your code.'); }
  else if (parseInt(guests) <= MAX[code]) {
    app.getElementById('submit').setEnabled(true);
    app.getElementById('status').setText(''); }
  else { 
    app.getElementById('submit').setEnabled(false)
    app.getElementById('status').setText('Whoops, too many people!'); }
  return app;
}

function submit(e) {
}
于 2013-08-29T00:41:45.393 回答