0

只是给你一些关于我的问题的背景知识:我正在使用 UI 服务在 Google App Script 中创建一个表单,并将特定的日历事件存储在 dataArray 中。所以事件对象存储在数组中。我想将此数组传递给提交函数,但不知道该怎么做,因为:

  1. 我无法将其添加为回调元素(因为它不是小部件)
  2. 我无法将事件对象存储在小部件(即列表框等)中,然后将该小部件添加为回调元素。

这是我正在尝试做的一个简短示例:

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

我会很感激你可以借给我的任何建议。

谢谢!

4

1 回答 1

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);
  ...
于 2013-07-23T21:36:47.077 回答