코드를 실행하면 권한/사용 권한을 요청합니다. 필요한 권한을 부여하고 코드를 다시 실행합니다. 이번에는 UI를 얻습니다. Google Apps Script : 약속 예약시 승인 오류
내가 그것을 어떻게 해결할 수 : I 제출 버튼을 누를 때 나는 그 권한이 작업을 수행하는 것이 필요하다라는 오류 메시지가 있어요? 이 코드는 ( original google developers site에 따르면 7 월 23 일에 업데이트 되었습니까?) 구식입니까?function scheduleAppointment() {
var app = UiApp.createApplication().setTitle('Schedule an Appointment');
var doc = SpreadsheetApp.getActiveSpreadsheet();
var sheet = doc.getActiveSheet();
var row = sheet.getActiveRange().getRowIndex();
// Create a grid with 5 text boxes and corresponding labels
var grid = app.createGrid(5, 2);
var textApptDate = app.createTextBox();
// Text entered in the text box is passed in to apptDate
textApptDate.setName('apptDate');
var day = new Date();
day.setDate(day.getDate()+1);
textApptDate.setText(Utilities.formatDate(day, "PDT", "MM/dd/yyyy"));
grid.setWidget(0, 0, app.createLabel('Appointment Date:'));
grid.setWidget(0, 1, textApptDate);
var textStartTime = app.createTextBox();
// Text entered in the text box is passed in to startTime
textStartTime.setName('startTime');
textStartTime.setText('09:00 PDT');
grid.setWidget(1, 0, app.createLabel('Work Day Start Time:'));
grid.setWidget(1, 1, textStartTime);
var textEndTime = app.createTextBox();
// text entered in the text box is passed in to endTime.
textEndTime.setName('endTime');
textEndTime.setText('17:00 PDT');
grid.setWidget(2, 0, app.createLabel('Work Day End Time:'));
grid.setWidget(2, 1, textEndTime);
var textUser = app.createTextBox();
// Text entered in the text box is passed in to userEmail
textUser.setName('userEmail');
textUser.setText(sheet.getRange(row, getColIndexByName("Contact email")).getValue());
grid.setWidget(3, 0, app.createLabel('User\'s Email'));
grid.setWidget(3, 1, textUser);
// Create a hidden text box for storing the selected row number in the sheet
var rowValue = app.createTextBox();
rowValue.setName('rNum');
rowValue.setText(row.toString());
rowValue.setVisible(false);
grid.setWidget(4, 0, rowValue);
// Create a vertical panel..
var panel = app.createVerticalPanel();
// ...and add the grid to the panel
panel.add(grid);
// Create a button and click handler; pass in the grid object as a callback element and the handler as a click handler
// Identify the function schedule as the server click handler
var button = app.createButton('Schedule Appointment');
var handler = app.createServerClickHandler('schedule');
handler.addCallbackElement(grid);
button.addClickHandler(handler);
// Add the button to the panel and the panel to the application, then display the application app in the spreadsheet
panel.add(button);
app.add(panel);
doc.show(app);
}
// function that schedules the appointments and updates the spreadsheet
function schedule(e) {
var apptDate = e.parameter.apptDate;
var userEmail = e.parameter.userEmail;
var sheet = SpreadsheetApp.getActiveSheet();
var userCalendar = CalendarApp.getCalendarById(userEmail);
var helpDeskCalendar = CalendarApp.getDefaultCalendar();
// Find the first available 30 minute timeslot on the selected day
var workDayStartTime = e.parameter.startTime;
var workDayEndTime = e.parameter.endTime;
var startTime = new Date(apptDate + " " + workDayStartTime);
var endTime = new Date(startTime.getTime() + 30 * 60 * 1000);
var row = e.parameter.rNum;
while (endTime.getTime() < new Date(apptDate + " " + workDayEndTime).getTime()) {
var numUserEvents = userCalendar.getEvents(startTime, endTime).length;
var numHelpDeskEvents = helpDeskCalendar.getEvents(startTime, endTime).length;
if (numUserEvents == 0 && numHelpDeskEvents == 0) {
CalendarApp.createEvent("Help Desk appointment", startTime, endTime,
{description: "Help Desk Ticket #" + row,
guests: userEmail});
// Update Notes and Status
sheet.getRange(row, getColIndexByName("Notes")).setValue("Appointment scheduled.");
sheet.getRange(row, getColIndexByName("Status")).setValue("In Progress");
// Clean up - get the UiApp object, close it, and return
var app = UiApp.getActiveApplication();
app.close();
return app;
}
// Add 30 minutes to start and end times
startTime = endTime;
endTime = new Date(startTime.getTime() + 30 * 60 * 1000);
}
Browser.msgBox("There are no times available on " + apptDate + ". Please try another date.");
// Clean up - get the UiApp object, close it, and return
var app = UiApp.getActiveApplication();
app.close();
return app;
}
당신은이 문제를 해결 했습니까? –
아직도, Serge! 나는 오늘 그것에 대해 연구 할 것이다. Serge, GAS 사이트 나 튜토리얼을 가지고 있습니까? – craftApprentice
아직이 프로젝트가 진행 중입니다 ... 인증을 철회하고 다시 인증을 시도한 적이 있습니까? –