消息框警报不会弹出

时间:2015-09-11 19:54:20

标签: google-apps-script google-sheets

我想在编辑某些单元格时弹出一个消息框。例如,我有一个开始时间列,他们需要格式为MM/DD/YYYY HH:MM:SS(军事时间)。当有人在此处输入日期/时间时,我想要弹出一条消息:

  

使用以下格式:MM / DD / YYYY HH:MM:SS(军事时间)。

当我尝试使用下面的脚本时,无论编辑哪个单元格,消息框都会反复弹出。当用户在该单元格中输入内容时,我希望它弹出,以便他们知道正确的格式。我希望他们能够点击OK并且消息消失,直到正在编辑具有相应列单元格的下一行行。

function onEdit(e) {
  var sheet = SpreadsheetApp.getActive().getSheetByName("Events");
  var data = sheet.getDataRange().getValues();
  var headerRow = 1;
  var i = 1;
  for (i = 1; i < data.length; i += 1) {
      var row = data[i];
      var startTime = sheet.getRange(headerRow + i, 3).getValue();
          if (row[0] !== "" && startTime !== "") {
              Browser.msgBox('Use the the following format: MM/DD/YYYY HH:MM:SS (in military time)', Browser.Buttons.OK_CANCEL);
          }
  }
}

1 个答案:

答案 0 :(得分:0)

我不确定此代码是否完全回答了您的问题。如果没有,请告诉我。

function onEdit(e) {
  Logger.log('onEdit ran!');

  var columnOfCellEdited = e.range.getColumn(); //Get the column of the cell being edited
  Logger.log('columnOfCellEdited: ' + columnOfCellEdited);

  if (columnOfCellEdited !== 1) {
    return;  //If the user is not editing column one, then quit here
  };

  var valueOfThisCell = e.value; //Only available if the edit is to a single cell
  var rowOfCellEdited = e.range.getRow();

  Logger.log('valueOfThisCell: ' + valueOfThisCell);
  Logger.log('rowOfCellEdited: ' + rowOfCellEdited);

  var sheet = SpreadsheetApp.getActive().getSheetByName("Events");
  var startTime = sheet.getRange(rowOfCellEdited, 3);

  Logger.log('startTime: ' + startTime);

  var formatOfTheDate = 'ToDo get the format';

  if (formatOfTheDate !== "MM/DD/YYYY HH:MM:SS") {
     Browser.msgBox('Use the the following format: MM/DD/YYYY HH:MM:SS (in military time)', Browser.Buttons.OK_CANCEL);
  };
}

您可以使用e事件对象获取有关正在编辑的当前单元格的信息。

Google Documentation - Events for Sheets