为了给你一些关于我问题的背景知识: 我正在使用UI服务在Google App Script中创建表单,并且我将特定的日历事件存储在dataArray中。因此事件对象存储在数组中。我想将此数组传递给提交函数,但无法弄清楚如何解决这个问题,因为:
以下是我想要做的简要示例:
var cal= CalendarApp.getDefaultCalendar();
var event= cal.getEvents(new Date("June 16, 2013 PST"),
new Date("July 22, 2013 PST"));
var specific = new Array;
for( var j=0; j<event.length;j++){
specific.push(event[j]);
//This stores the events in the specific variable
//I want to send this variable (w/ the data) to another function on submit
我很感激您可以借给我的任何建议。
谢谢!
答案 0 :(得分:0)
作为我在评论中给出的答案的补充:“您也可以简单地存储id,当您使用相同的开始/结束时间再次阅读事件时,您可以检查事件是否与保存相对应循环中的ID ...如果找到具有正确ID的匹配,您确定它是正确的事件“
这是我用来修改/更新/删除日历事件的代码,使用他们的ID作为参考。此代码用于删除从电子表格中选择的特定事件,修改事件的代码大致相同,至少它使用相同的ID检查。
...
var cal = CalendarApp.openByName(calName);
if (cal) {
var events = cal.getEvents(new Date(date_deb), new Date(date_fin),{max: 4000}); // stocke tt ds une variable array
var sel= sh.getRange(6,1,sh.getLastRow()-5, 10).getValues();// read data in the SS
for(e=0;e<events.length;++e){
var delFlag = false;
var ID = events[e].getId();
for(n=0;n<sel.length;++n){
if ((sel[n][8] == "x"||sel[n][8] == "X")&&sel[n][9]==ID){ // the ID here is stored in the spreadsheet in column J and I use a 'X' marker to select which event should be deleted
delFlag = true;
sh.getRange(n+6,9,1,2).setBackgroundColor('#ff5500');
SpreadsheetApp.flush();
Logger.log('FLAG '+ e);
break;
}
}
if(delFlag){
try{
var toDelete = events[e].deleteEvent();
++todel;
delFlag = false;
Logger.log('event deleted : '+sel[n][1]);
}catch(Err){Logger.log('Event from a serie already deleted from another occurence')}
}
}
}
var msg = todel + " événement(s) effacé(s) dans l'Agenda '"+calName+"'";
ss.toast("Effacement terminé", msg, 3);
...