Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 将包含对象的数组传递给GAS中的另一个函数_Arrays_Callback_Google Apps Script_Google Forms - Fatal编程技术网

Arrays 将包含对象的数组传递给GAS中的另一个函数

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

就我的问题给你一点背景知识: 我正在使用UI服务在Google应用程序脚本中创建一个表单,并在dataArray中存储特定的日历事件。因此,事件对象存储在数组中。我想将此数组传递给submit函数,但无法确定如何执行此操作,因为:

  • 我无法将其添加为回调元素(因为它不是小部件)
  • 我不能将事件对象存储在小部件(如列表框等)中,然后将该小部件添加为回调元素
  • 以下是我尝试做的一个简单示例:

    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)
    获得一个事件,该事件具有事件方法可用的所有参数,即使它被标识为事件系列,从用户的角度看它也不会改变任何东西。