Arrays 将包含对象的数组传递给GAS中的另一个函数
就我的问题给你一点背景知识: 我正在使用UI服务在Google应用程序脚本中创建一个表单,并在dataArray中存储特定的日历事件。因此,事件对象存储在数组中。我想将此数组传递给submit函数,但无法确定如何执行此操作,因为:Arrays 将包含对象的数组传递给GAS中的另一个函数,arrays,callback,google-apps-script,google-forms,Arrays,Callback,Google Apps Script,Google Forms,就我的问题给你一点背景知识: 我正在使用UI服务在Google应用程序脚本中创建一个表单,并在dataArray中存储特定的日历事件。因此,事件对象存储在数组中。我想将此数组传递给submit函数,但无法确定如何执行此操作,因为: 我无法将其添加为回调元素(因为它不是小部件) 我不能将事件对象存储在小部件(如列表框等)中,然后将该小部件添加为回调元素 以下是我尝试做的一个简单示例: var cal= CalendarApp.getDefaultCalendar(); var event= cal
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
var-cal=CalendarApp.getDefaultCalendar();
var事件=cal.getEvents(新日期(“太平洋标准时间2013年6月16日”),
新日期(“太平洋标准时间2013年7月22日”);
var-specific=新数组;
对于(var j=0;j,作为我在评论中给出的答案的补充:“您也可以简单地存储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);
...
。。。
var cal=CalendarApp.openByName(calName);
如果(校准){
var events=cal.getEvents(新日期(Date_deb),新日期(Date_fin),{max:4000});//stocke tt ds une变量数组
var sel=sh.getRange(6,1,sh.getLastRow()-5,10).getValues();//读取SS中的数据
对于(e=0;e是否可以包括(最低版本)问题中的代码?为什么不存储事件id呢?有了这个id,你可以取回事件并用它做任何你想做的事情…我做到了,我不认为你可以访问事件并仅用id@Sergeinsas我如何使用id访问事件标题、开始时间和日期?也许我我只是不知道它的功能。你可以使用getEventSeriesById(iCalId)
获得一个事件,该事件具有事件方法可用的所有参数,即使它被标识为事件系列,从用户的角度看它也不会改变任何东西。