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 に答える