首页 > 解决方案 > Google Apps 脚本 - 有条件的用户输入 - 数字提示

问题描述

我需要获取应该是正整数(整数)的用户输入。如果输入不是数字,我想出了如何继续显示提示,但我不知道如何为数字值编写条件。这是代码。

var ui = SpreadsheetApp.getUi(); // Same variations.

  do {
  var result = ui.prompt(
      'Please fill in',
      'Please enter number of people involved',
      ui.ButtonSet.OK_CANCEL);
  var text = parseInt(result.getResponseText());
  var button = result.getSelectedButton();
  }
  while (!(button == ui.Button.CANCEL) && isNaN(parseInt(text)) && !(button == ui.Button.CLOSE));

  var button = result.getSelectedButton();
  if (button == ui.Button.OK) {
    ui.alert('Number of people wanted: ' + text + '.');
  } else if (button == ui.Button.CANCEL) {
    ui.alert('Action cancelled.');
    return;
  } else if (button == ui.Button.CLOSE) {
    ui.alert('Action cancelled.');
    return;
  }

在我看来,我尝试了 <、>、!、&&、|| 的所有可能组合,但没有任何效果。

标签: google-apps-script

解决方案


  • 只有当值为正整数时,您才想退出 while 循环。

如果我的理解是正确的,那么这个修改呢?我认为您的情况有几个答案。所以请认为这只是其中之一。

修改后的脚本:

从:
while (!(button == ui.Button.CANCEL) && isNaN(parseInt(text)) && !(button == ui.Button.CLOSE));
到:
while (!(button == ui.Button.CANCEL) && !(/^[0-9]+$/.test(text)) && !(button == ui.Button.CLOSE));

参考:

如果我误解了你的问题,请告诉我。我想修改它。

编辑:

例如,在您当前修改的脚本中,如果输入了123-456和之类的值123abc123则检索该值。这是由于var text = parseInt(result.getResponseText()).

如果您不想这样做,请修改var text = parseInt(result.getResponseText())var text = result.getResponseText(). 这样,当输入这样的值时,它不会退出 while 循环。


推荐阅读