2013-07-23 122 views
0

仅就您的问题提供一些背景知识: 我使用UI Services在Google App脚本中创建表单,并将特定日历事件存储在dataArray中。所以事件对象被存储在数组中。我想通过这个数组来提交功能,但无法弄清楚如何去了解这一点,因为:将对象数组传递给GAS中的另一个函数

  1. 我不能将其添加为回调元素(因为它不是一个widget)
  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 

我会很感激你能不能借我的任何建议。

谢谢!

+0

你可以在问题中包含(最小版本)代码吗? – Mogsdad

+0

为什么你不存储事件ID呢?有了这个ID,你可以找回事件并做任何你想做的事情...... –

+0

我做到了这一点,我不认为你可以访问事件并获得一天和事件的时间与编号 – ScriptFiddler

回答

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); 
    ... 
相关问题