【发布时间】:2021-02-12 13:57:48
【问题描述】:
如果我单独启动我的函数Creaevento() 或Cancellaevento(),它们会从 Google 脚本开始并正确完成工作;但是,如果这些函数是由onEdit(e) 函数启动的,它们到达时就会停止工作:
- 这里
var eventCal = CalendarApp.getCalendarById(calendarId) - 或这里
var event = CalendarApp.getCalendarById(calendarId).createAllDayEvent(titolo, data)
有什么想法吗? 这是代码。 谢谢
function Cancellaevento() {
var spreadsheet = SpreadsheetApp.getActiveSheet();
var activeCell = spreadsheet.getActiveCell();
/**Andare a inizio riga */
var firstCell = activeCell.offset(0, 1-activeCell.getColumn());
firstCell.activate();
/**Recuperare valori dati */
var calendarId = spreadsheet.getRange("A2").getValue();
firstCell.activate();
spreadsheet.getCurrentCell().offset(0, 1).activate();
var data = spreadsheet.getCurrentCell().getValue();
spreadsheet.getCurrentCell().offset(0, 2).activate();
var titolo = spreadsheet.getCurrentCell().getValue();
//Accedere al calendario
var eventCal = CalendarApp.getCalendarById(calendarId);
firstCell.activate();
spreadsheet.getCurrentCell().offset(0, 4).activate();
var eventID = spreadsheet.getCurrentCell().getValue();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
Browser.msgBox('Checkpoint');
var event = eventCal.getEventById(eventID);
// show event name in log
Browser.msgBox('Cancellato "' + event.getTitle() + '" in data ' + event.getAllDayStartDate() + '\\n');
//Eliminare evento
event.deleteEvent();
//Deflaggare evento
firstCell.activate();
spreadsheet.getCurrentCell().offset(0, 5).activate();
};
function Creaevento() {
var spreadsheet = SpreadsheetApp.getActiveSheet();
var activeCell = spreadsheet.getActiveCell();
/**Andare a inizio riga */
var firstCell = activeCell.offset(0, 1-activeCell.getColumn());
firstCell.activate();
/**Recuperare valori dati */
var calendarId = spreadsheet.getRange("A2").getValue();
firstCell.activate();
spreadsheet.getCurrentCell().offset(0, 1).activate();
var data = spreadsheet.getCurrentCell().getValue();
spreadsheet.getCurrentCell().offset(0, 1).activate();
var mail = spreadsheet.getCurrentCell().getValue();
spreadsheet.getCurrentCell().offset(0, 1).activate();
var titolo = spreadsheet.getCurrentCell().getValue();
spreadsheet.getCurrentCell().offset(0, 5).activate();
var consegna = spreadsheet.getCurrentCell().getValue();
//Accedere al calendario
Browser.msgBox('Checkpoint');
//Creare evento
var event = CalendarApp.getCalendarById(calendarId).createAllDayEvent(titolo, data/**, {description:consegna,guests:mail,sendInvites: true}*/);
//Salvare eventID
spreadsheet.getCurrentCell().offset(0, -4).activate();
spreadsheet.getCurrentCell().setValue(event.getId());
//Log
Browser.msgBox('Evento "' + titolo + '" in data ' + data + ' creato con successo');
//Flaggare evento
firstCell.activate();
spreadsheet.getCurrentCell().offset(0, 5).activate();
};
function onEdit(e) {
var spreadsheet = SpreadsheetApp.getActiveSheet();
var checkbox = spreadsheet.getCurrentCell().getValue();
//let cellCheck = (e.range.getColumn() == 6);
//if (!(cellCheck)) {
if (e.range.getColumn() == 6 && checkbox==true){
Browser.msgBox('Lancio Crea evento');
Creaevento();
}else if(e.range.getColumn() == 6 && checkbox==false){
Browser.msgBox('Confermi cancellazione evento?');
Cancellaevento();
}else{
Browser.msgBox('None');
}
}
【问题讨论】:
-
重命名函数并按照重复帖子中的建议创建可安装触发器。
-
同样在执行页面你可以找到你所有函数的执行。由于这是一个触发功能,您在执行时看不到执行情况。你需要去执行页面看看你的代码有没有错误。在那里,您可以看到确切的错误作为重复问题的标题,因此您可以更轻松地找到解决方案。
标签: google-apps-script google-sheets