我想在编辑某些单元格时弹出一个消息框。例如,我有一个开始时间列,他们需要格式为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);
}
}
}
答案 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
事件对象获取有关正在编辑的当前单元格的信息。