пытается добавить Гость через Google Appscript - PullRequest
0 голосов
/ 11 апреля 2019

Пытаюсь добавить гостя в календарь с помощью скрипта приложений Google, который принимает запрос календаря от пользователя через формы Google ---> затем он обновляет онлайн-таблицу Google Excel, если нет конфликтов, и выполняет резервирование, если нет конфликтов, всеэто работает нормально, но если пользователь пытается изменить время для резервирования, он не может, поскольку он не является владельцем календаря, чтобы вносить изменения, поэтому единственный обходной путь, о котором я могу подумать, - это добавить туда электронное письмо из отправленного запроса и добавитьих как гостя на это конкретное событие, но оно закончилось неудачно.

  1. пользователь отправляет запрос в форму Google с указанием своего имени электронной почты и т. д.
  2. формы Google обновляют страницу Google Excel и проверяют, есть лиНет конфликтов.
  3. успешно обновляет календарь и отправляет подтверждение на электронную почту пользователя.
  4. Пользователь должен отредактировать время своего бронирования в календаре, но не может, поскольку он не являетсягость и не может редактировать календарь (пытаясь решить эту проблему автоматическиПриведя его в качестве гостя для запрошенного события.

прочитайте, чтобы найти решения по добавлению местоположения, но не удалось добавить пользователя в качестве гостя.

попытался добавить

var body = {
  'sendNotification': true,
  'attendees': attendees
};

var ret = Calendar.Events.patch(body, calendarId, eventId);

но безуспешно

Код выглядит следующим образом:

// Room Reservation

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var lastRow = sheet.getLastRow();
var lastColumn = sheet.getLastColumn();

// Calendar to output reservations to
var cal145 = CalendarApp.getCalendarById('xxxxxx@resource.calendar.google.com');

// Create use data from user submission
// This function submits data from the google form and inputs it into the "Room Reservation" sheet by the user
function Submission(){
  var row = lastRow;
  this.timestamp = sheet.getRange(row, 1).getValue();
  this.NameReason = sheet.getRange(row, 2).getValue();
  this.email = sheet.getRange(row, 3).getValue();
  this.date = sheet.getRange(row, 5).getValue();
  this.time = sheet.getRange(row, 6).getValue();
  this.duration = sheet.getRange(row, 7).getValue();
  this.room = sheet.getRange(row, 8).getValue();
  // Info not from spreadsheet
  this.roomInt = this.room.replace(/\D+/g, '');
  this.status;
  this.dateString = (this.date.getMonth() + 1) + '/' + this.date.getDate() + '/' + this.date.getYear();
  this.timeString = this.time.toLocaleTimeString();
  this.date.setHours(this.time.getHours());
  this.date.setMinutes(this.time.getMinutes());
  this.calendar = eval('cal' + String(this.roomInt));
  return this;
}

// Use duration to create endTime variable
function getEndTime(request){
  request.endTime = new Date(request.date);
  switch (request.duration){
    case "1 hour":
      request.endTime.setMinutes(request.date.getMinutes() + 60);
      request.endTimeString = request.endTime.toLocaleTimeString();
      break;
    case "2 hours":
      request.endTime.setMinutes(request.date.getMinutes() + 120);
      request.endTimeString = request.endTime.toLocaleTimeString();
      break;
    case "3 hours":
      request.endTime.setMinutes(request.date.getMinutes() + 180);
      request.endTimeString = request.endTime.toLocaleTimeString();
      break;
  }
}

// Check for appointment conflicts
function getConflicts(request){
  var conflicts = request.calendar.getEvents(request.date, request.endTime);
  if (conflicts.length < 1) {
    request.status = "Approve";

  } else {
    request.status = "Conflict";
  }

}

function draftEmail(request){
  request.buttonLink = "xxxxxxx ";
  request.buttonText = "New Request";
  switch (request.status) {
    case "Approve":
      request.subject = "Confirmation: " + request.room + " Reservation for " + request.dateString;
      request.header = "Confirmation";
      request.message = "Your room reservation has been scheduled.";
      break;
    case "Conflict":
      request.subject = "Conflict with " + request.room + "Reservation for " + request.dateString;
      request.header = "Conflict";
      request.message = "There is a scheduling conflict. Please pick another time."
      request.buttonText = "Reschedule";
      break;
  }
}

function updateCalendar(request){
  var event = request.calendar.createEvent(
    request.NameReason,
    request.date,
    //request.reason,
    request.endTime
    )
}

function sendEmail(request){
  MailApp.sendEmail({
    to: request.email,
    subject: request.header,
    htmlBody: makeEmail(request)
  })
  sheet.getRange(lastRow, lastColumn).setValue("Sent: " + request.status);
}



function sendinvite(request)
{


  request.addGuest(email);


}

// --------------- main --------------------

function main(){
  var request = new Submission();
  getEndTime(request);
  getConflicts(request);
  draftEmail(request);
  Logger.log(request);
  sendEmail(request);
  if (request.status == "Approve") updateCalendar(request);
  if (request.status == "Approve")
  {
   sendinvite(request);
  }
}

Окончательный результат должен позволить пользователю редактировать время создания события, хотя он не является владельцем календаря.функция должна добавить пользователя в качестве гостя к тому конкретному событию, которое он запросил, чтобы он мог редактировать время.

этот скрипт в настоящее время работает нормально, без добавления гостевой функции sendinvite.

спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...