【问题标题】:Cancel Button UI Prompt取消按钮 UI 提示
【发布时间】:2019-03-01 19:37:37
【问题描述】:

所以我正在制作的提示对话框有点问题。此代码的工作方式是每当有人在 ui 提示符上点击取消时,它会取消第一个提示,但随后会出现第二个提示。有没有办法让当有人点击取消按钮时取消两个提示?我不确定这是否有意义,但这是我的代码。

function Cancel() {
  var ui = SpreadsheetApp.getUi();

  var result = ui.prompt(
      'What Day Was Safe Rides Cancelled?',
      'Please Enter the Date as mm/dd/yyy.',
      ui.ButtonSet.OK_CANCEL);

  var result2 = ui.prompt(
      'What is the Reason for the Cancellation?',
      ui.ButtonSet.OK_CANCEL);

  // Process the user's response.
  var button = result.getSelectedButton();
  var text = result.getResponseText();
  var text2 = result2.getResponseText();
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Nightly Stats'),
    row = sheet.getLastRow();

  if (button == ui.Button.OK) {
    // User clicked "OK".
    sheet.insertRowAfter(row);
      sheet.getRange(row+1,1).setValue(text).setHorizontalAlignment("center");
      sheet.getRange(row+1,2,1,6).setValue(text2).setHorizontalAlignment("center").mergeAcross();
      sheet.getRange(row+1,8).setValue("1").setHorizontalAlignment("center");
    ui.alert('The Cancellation has Been Recorded');
  } else if (button == ui.Button.CANCEL) {
    // User clicked "Cancel".
    ui.alert('You closed the dialog.');
  } else if (button == ui.Button.CLOSE) {
    // User clicked X in the title bar.
    ui.alert('You closed the dialog.');
  }
}

您能提供的任何帮助将不胜感激。谢谢!

【问题讨论】:

  • 只有在第一个提示OK后才显示第二个提示。

标签: google-apps-script prompt cancel-button


【解决方案1】:

您基本上需要将“result2”提示逻辑移动到if (button == ui.Button.OK) {...}部分。

另外,我建议将“insertData”内容重构到它自己的函数中,这样按钮/提示逻辑更容易理解。

类似这样的:

var SS = SpreadsheetApp.getActiveSpreadsheet();

function Cancel() {
  var ui = SpreadsheetApp.getUi();

  // first prompt
  var result = ui.prompt(
    "What Day Was Safe Rides Cancelled?",
    "Please Enter the Date as mm/dd/yyy.",
    ui.ButtonSet.OK_CANCEL
  );
  var button = result.getSelectedButton();
  var text = result.getResponseText();

  // User clicked "OK" on first prompt
  if (button == ui.Button.OK) {
    // second prompt
    var result2 = ui.prompt(
      "What is the Reason for the Cancellation?",
      ui.ButtonSet.OK_CANCEL
    );
    var button2 = result2.getSelectedButton();
    var text2 = result2.getResponseText();

    // user clicked "OK" on second prompt
    if (button2 == ui.Button.OK) {
      insertData(text, text2);
    }
  }
}

function insertData(text, text2) {
  // get last row in nightly stats sheet
  var sheet = SS.getSheetByName("Nightly Stats");
  row = sheet.getLastRow();

  // insert data into sheet
  sheet.insertRowAfter(row);
  sheet
    .getRange(row + 1, 1)
    .setValue(text)
    .setHorizontalAlignment("center");
  sheet
    .getRange(row + 1, 2, 1, 6)
    .setValue(text2)
    .setHorizontalAlignment("center")
    .mergeAcross();
  sheet
    .getRange(row + 1, 8)
    .setValue("1")
    .setHorizontalAlignment("center");
}

【讨论】:

  • 非常感谢!只有一个小错误,它说“文本未定义”,但这是一个简单的修复。非常感谢您的帮助。
  • 对了,我忘了把文字传过来。编辑了答案。很高兴这对你有用!
猜你喜欢
  • 1970-01-01
  • 2011-10-21
  • 2015-04-24
  • 2011-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-10
  • 1970-01-01
相关资源
最近更新 更多