我正在使用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和不同的事件?