我在删除网站Google日历上的活动时遇到问题

时间:2018-01-16 16:01:18

标签: javascript for-loop google-apps-script google-calendar-api

我正在使用Intranet网站。此站点的任务之一是在Google日历上安排活动以预订公司的房间。调度程序工作正常,但是当用户尝试删除事件时,问题就出现了。操作应如下所示:单击“要删除的URL”,该链接应弹出一个删除操作按钮;问题是,只有创建事件的用户是出现在URL ID的用户时才会出现该按钮。我有问题所在,因为当我看到我创建的事件的详细信息时,我的身份证明我是所有者,但是当我点击“要删除的网址”时,网址中的ID会发生变化弹出窗口显示不同的事件,当然还有不同的用户ID。我不知道我做错了什么。这是我的代码:

第一个是调度程序脚本的Main.gs:

Main.gs

function doGet(e) {

  var app = UiApp.createApplication(); 
  var panel = app.createVerticalPanel().setId('panel');
  var creador = Session.getActiveUser().getEmail();
  var pagina = SitesApp.getActivePage().getName();
  var url = SitesApp.getActivePage().getUrl();
  panel.add(app.createTextBox().setName("creador").setWidth(150).setValue(creador).setReadOnly(true).setVisible(false));
panel.add(app.createTextBox().setName("url").setWidth(150).setValue(url).setReadOnly(true).setVisible(false));

function createEvents(e){
  try{
    var app = UiApp.getActiveApplication();
    app.getElementById("btn").setText("Creando...");
    var logueado = e.parameter.creador;
    var eventDateStart = e.parameter.fecha;
    var url = e.parameter.url;
    var salas = [{}];
    salas = eventCalendario.split(",");
    var idReg = CalcularNumero()
    var urldelete = '';

       for (var i=0; i< salas.length; i++) {

        urldelete = 'https://sites.google.com/a/gs1mexico.org/rds_v1/reserva?id='+idReg;
        descripcionCompleta += "<b>URL para eliminar reserva: </b> <br/> " + urldelete + "<br/><br/>";
        descripcionCompleta += "<b>Creador: </b>" + logueado + "<br/>";
        descripcionCompleta += "<b>"+descripcion+"</b>" + "<br/>"; 
        descripcionCompleta += "<b>Personas:</b> " + personas + "<br/>";        
        var cal = CalendarApp.getCalendarsByName(salas[i])[0];
var registro =  SpreadsheetApp.openById('1Sl0r18bdsvaBKHHfwZ-HLKMDVTdyyv-vOzsCYemhtaA').getSheetByName('registro'); registro.getRange(registro.getLastRow(), 1, 1, 18).setValues([[idReg,eventid,eventTitle,descripcion,personas,eventStartTime,eventEndTime,                                                                        logueado,'SI',salas[i],stringIdRecursos,montaje,stringIdAlimentos,                                                   stringValAlimentos,tipo,'-',descripcionCompleta,urldelete]]);
var reporte =  SpreadsheetApp.openById('1Sl0r18bdsvaBKHHfwZ-HLKMDVTdyyv-vOzsCYemhtaA').getSheetByName('reporte'); reporte.getRange(reporte.getLastRow()+1, 1, 1, 12).setValues([[eventTitle,descripcion,personas,eventStartTime,eventEndTime,                                                                        logueado,eventCalendario,recursosSelecionadosString2,montaje,alimentosSelecionadosString2,tipo,'SI']]); 
          idReg = CalcularNumero();
          descripcionCompleta='';
        }
        var popup = app.createPopupPanel();
        var link = app.createAnchor('Regresar', url).setTarget('_parent');
        popup.add(link);
        popup.show();
        app.getElementById('panel').setVisible(false);
        app.add(popup);
     }   return app;
    }

  }
  catch(e){
    app.add(app.createLabel('Error generado: '+e));
    return app;
  }
}

Selected.gs

function CalcularNumero () {
  var range = SpreadsheetApp.openById('1Sl0r18bdsvaBKHHfwZ-HLKMDVTdyyv-vOzsCYemhtaA').getSheetByName('registro').getDataRange().getValues();
  var idReg = 0;
  var columnaID = 1;
  for (var i=0; i<= range.length; i++) {
    if (parseInt(range[columnaID, i]) > idReg) 
    {idReg = parseInt(range[columnaID, i])};
  } 
  idReg = parseInt(idReg);
  return idReg.toString()
}

然后我有另一个Erase Action脚本,代码在这里:

Erase.gs

function doGet(e) {

  var range = SpreadsheetApp.openById('1Sl0r18bdsvaBKHHfwZ-HLKMDVTdyyv-vOzsCYemhtaA').getSheetByName('registro').getDataRange().getValues();
  var idReg = e.parameter.id
  var eventbyid = range[idReg];
  var idG=eventbyid[1];
  var creador=eventbyid[9];
  var sala=eventbyid[11]; 
  var logueado = Session.getActiveUser().getEmail();

  var eventCalendario = app.createTextBox().setName("eventCalendario").setWidth(300);
  eventCalendario.setValue(sala);
  eventCalendario.setReadOnly(true);
  panel.add(eventCalendario);

  var btn = app.createButton('Borrar evento');
  var handler = app.createServerClickHandler('deleteEvents');
  handler.addCallbackElement(panel);
  btn.addClickHandler(handler);

  if (creador == logueado)
    panel.add(btn);
  app.add(panel); 
  return app;
}


function deleteEvents(e){

  //Get the active application
  var app = UiApp.getActiveApplication();

  try{
    //get the entries;
    var id = e.parameter.eventid;
    var eventCalendario = e.parameter.eventCalendario;
    var cal = CalendarApp.getCalendarsByName(eventCalendario)[0];

    var event = cal.getEventSeriesById(id);
    event.deleteEventSeries();
    app.add(app.createLabel('Se ha eliminado el evento correctamente en el calendario '+ eventCalendario));
    app.getElementById('panel').setVisible(false);
    return app;
  }
  catch(e){
    app.add(app.createLabel('Error generado: '+e));
    return app;
  }
}

我需要知道为什么在我尝试从日历中删除我的活动时,它会显示一个与我创建的不同的ID和不同的事件?

0 个答案:

没有答案