1

スプレッドシートの日付列を処理し、カレンダー (誕生日) にエントリを生成する小さな Google Apps Script があります。

作業は問題ありませんが、(最近作成された) CalendarEvent にリマインダーを追加すると、エラーがスローされます。

サービス エラー: CalendarApp: 不一致: etags = ["GUQKRgBAfip7JGA6WhJb"]、バージョン = [63489901413]

イベントの作成後に 1 秒間のスリープを実行しようとしましたが (カレンダーで変更が行われるのを待ちます)、うまくいきません...

ところで、イベントは正常に作成されますが、リマインダーのみを追加できません。

PD: カレンダーは私が所有しているものですが、メインのカレンダーではありません。

コードの一部を次に示します。

  try
  {                
    birthday = new Date(Data[i][BirthColumn]);        
    birthday.setFullYear(today.getFullYear());                                  
    birthday.setUTCHours(12);

    birthlist += Data[i][NameColumn] + " --> " + birthday + "\n";

    calendarevent = cal.createAllDayEventSeries("¡Cumpleaños " + Data[i][NameColumn] + "!", birthday, CalendarApp.newRecurrence().addYearlyRule().times(YearsInAdvance));

    if (calendarevent == null)          
      success = false;
    else
    {
      //This sentence fails every single time.
      calendarevent.addEmailReminder(0);
      calendarevent.addPopupReminder(0);
      calendarevent.addSmsReminder(0);
    }    
  }  
  catch (ee)
  {         
     var row = i + 1;
     success = false;

    errlist += "Error on row " + row + ": check name and birth date. Exception Error: " + ee.message + "\n";                
  }  
4

2 に答える 2

2

Serge insasが以前に私に提案したように、これは私が最終的にそれを機能させるために変更したコードの一部です:

    if (calendarevent == null)          
      success = false;
    else
    {
      cal.getEventSeriesById(calendarevent.getId()).addEmailReminder(0);          
      cal.getEventSeriesById(calendarevent.getId()).addPopupReminder(0);
      cal.getEventSeriesById(calendarevent.getId()).addSmsReminder(0);
    }   
于 2012-11-30T14:02:12.723 に答える
1

これは既知の問題 です。回避策については、コメント番号 67 を参照してください。秘訣は、追加するすべてのアイテム (リマインダー、ポップアップなど) のイベントを再呼び出しすることcal.getEventSeriesById(eventID)です.getId() 。いくつかのスクリプトで問題が解決しました。

于 2012-11-29T20:01:04.857 に答える