날짜가 변경 될 경우 이벤트의 수식을 업데이트하기 위해 두 개의 날짜 상자가 있고 둘 다에 onValueChangeHandler가 추가되었습니다. 그것은 작동합니다.GAS를 사용하여 DateBox의 onValueChangeHandler를 활성화하는 방법
로드하는 동안 (doGet이 반환 된 후)로드하는 동안 두 날짜 상자 모두에 유효한 데이터가 제공되며 onValueChangeHandler가 실행되기를 원합니다. 체크 박스와 달리 불행히도, 날짜 박스에는 setValue(date, true);
메소드가 없습니다.
var onValueChangeShowEvents = app.createServerHandler('onValueChangeShowEvents');
var dbxDateFrom = app.createDateBox().setId(wid_dbxDateFrom).setWidth('85')
.addValueChangeHandler(onValueChangeShowEvents);
var dbxDateUntil = app.createDateBox().setId(wid_dbxDateUntil).setWidth('85')
.addValueChangeHandler(onValueChangeShowEvents);
var eventsTable = app.createFlexTable().setId(wid_eventsTable);
function onValueChangeShowEvents(e)
{
var func = 'onValueChangeShowEvents';
Logger.log('in ' + func + ' source= ' + e.parameter.source + ' value= ' + e.parameter[e.parameter.source]);
var app = UiApp.getActiveApplication();
var dbxDateFrom = app.getElementById(wid_dbxDateFrom);
var dbxDateUntil = app.getElementById(wid_dbxDateUntil);
var dateFrom = new Date(e.parameter[wid_dbxDateFrom]);
var dateUntil = new Date(e.parameter[wid_dbxDateUntil]);
dateUntil = new Date(dateUntil.getTime() + (24 * 60 * 60 - 1) * 1000); // Full day until 23 u 59.59
var cal = CalendarApp.getCalendarsByName(MyCalender)[0]; // Retrieve the calender (verify !!)
var events = cal.getEvents(dateFrom, dateUntil); // All events within the timeframe
var numEvents = events.length;
var eventsTable = app.getElementById(wid_eventsTable);
eventsTable.clear().setCellSpacing(1).setCellPadding(1);
// eventsTable.setColumnStyleAttributes(0, { textAlign: "right" }); // Does not work
eventsTable.setStyleAttributes({ textAlign: "right" });
var numFields = 5;
var text = '';
var widthFields = [ '26', '85', '50', '50', '200'];
for (var i=0; i<numEvents; i++)
{
var event = events[i];
var numRow = i + 1;
// var id = event.getId();
var dateStart = event.getStartTime();
var dateEnd = event.getEndTime();
var title = event.getTitle();
// var location = event.getLocation();
// var guests = event.getGuestList();
for (var j=0; j<numFields; j++)
{
var fieldId = evtPrefix + bell + numRow + bell + j; // Coding the fields
var tbxField = app.createTextBox().setReadOnly(true).setStyleAttribute('fontWeight', 'bold')
.setId(fieldId).setName(fieldId).setWidth(widthFields[j]);
if (j == 0) text = numRow; // Must be changed into a button or anchor in order to allow show and update the event
else if (j == 1) text = dateStart.format('yyyy-mm-dd'); // Uses http://blog.stevenlevithan.com/archives/date-time-format
else if (j == 2) text = dateStart.format('HH:MM');
else if (j == 3) text = dateEnd.format('HH:MM');
else if (j == 4) text = title;
tbxField.setText(text);
eventsTable.setWidget(numRow, j, tbxField);
}
};
return app;
}
어떻게하면 코드에서 처음으로 onValueChangeHandler를 활성화 할 수 있습니까?
dateWidgets (dbxDateFrom 및 dbxDateUntil)의 이름을 설정하지 않는 것이 정상입니까? –