您好,并提前感谢您的帮助。
我在Google表格中尝试做的是将数据验证日期选择器添加到数据验证下拉选项中。
我想这样做是为了在员工的开始和结束日期情况下使用。专门针对结束日期。我的想法是,从下拉选项中我可以选择“选择一个”,“存在”或“日期”选项,其中“日期”选项启用数据验证日期选择器。
更好的是,如果选择“日期”立即触发日期选择器。
以下是我一直试图为此功能工作的代码:
function listCalendar() {
// Set the data validation for cells in column H6 thru H1000 to require "Choose One", "Present", or "Date", with a dropdown menu.
var cell = SpreadsheetApp.getActive().getSheetByName('Employees').getRange('H6:H100');
var rule1 = SpreadsheetApp.newDataValidation().requireValueInList(['Choose One', 'Present', 'Date']).build();
// Set the "Date" option in the dropdown menu to activate a date picker.
var rule2 = SpreadsheetApp.newDataValidation().requireDate().build();
if (cell == 'Date') {cell.setDataValidation(rule2);}
else {cell.setDataValidation(rule1);}
}
再次感谢您的帮助!
答案 0 :(得分:2)
添加以下代码并设置电子表格onEdit触发器。希望这能给你一个开始。
function onEdit() {
// Set the data validation for cells in column H6 thru H1000 to require "Choose One", "Present", or "Date", with a dropdown menu.
var cell = SpreadsheetApp.getActive().getActiveSheet().getRange("H6:H100");
var rule1 = SpreadsheetApp.newDataValidation().requireValueInList(['Choose One', 'Present', 'Date']).build();
var rule2 = SpreadsheetApp.newDataValidation().requireDate().build();
if (SpreadsheetApp.getActive().getActiveSheet().getActiveCell().getValue() == 'Date') {
SpreadsheetApp.getActive().getActiveSheet().getActiveCell().setDataValidation(rule2);
}
else {
cell.setDataValidation(rule1);
}
}
答案 1 :(得分:0)
非常感谢Ritz ^^
在查看Ritz发布的代码之后,我意识到我在一个我应该使用getValue的地方使用getRange,并且函数的onEdit部分允许规则在彼此之间来回切换。所以,为了防止这对其他人有用,下面是我最终得到的代码:
function onEdit() {
var ss = SpreadsheetApp.getActive();
var employees = ss.getSheetByName('Employees');
var cellrange = employees.getRange('H6');
var cellvalue = cellrange.getValue();
// Set the data validation to require "Choose One", "Present", or "Date", with a dropdown menu.
var rule1 = SpreadsheetApp.newDataValidation().requireValueInList(['Choose One', 'Present', 'Date']).build();
// Set the "Date" option in the dropdown menu to activate a date picker.
var rule2 = SpreadsheetApp.newDataValidation().requireDate().build();
if (cellvalue == 'Date') {cellrange.setDataValidation(rule2);}
else {cellrange.setDataValidation(rule1);}
}