2013-07-23 176 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); 
    ... 
相關問題