LoginSignup
3
3

More than 1 year has passed since last update.

Googleカレンダーの予定を一括で削除するGAS

Last updated at Posted at 2021-07-16

CRMシステムと遊んでいたら「間違えてカレンダー数千件のイベントを立ててしまった」ということがよくあるでしょう。
1件1件削除していたら1週間かかってしまいます。1週間この仕事に集中するのもおすすめですが、もっとおすすめなのがGASを使った一括削除です。

事前準備

まずこのようなスプシを作ります。
image.png

あとはGASに次のスクリプトをセットします。

function getCalendarEvents() {
  var calendar = CalendarApp.getDefaultCalendar();
  const startTime = new Date('2021/07/14 00:00:00'); // 間違えてデータを入れてしまった日付の開始日
  const endTime = new Date('2021/07/15 00:00:00'); // 間違えてデータを入れてしまった日付の終了日
  const events = calendar.getEvents(startTime, endTime);
  const values = [];
  for(const event of events){
    const record = [
      event.getTitle(),
      event.getStartTime(),
      event.getEndTime(),
      event.getId()
    ];
    values.push(record);
  }
  SpreadsheetApp.getActiveSheet().getRange(2, 1, values.length, values[0].length).setValues(values);
}
function deleteCalendarEvents(){
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var calendar = CalendarApp.getDefaultCalendar();
  var ids = sheet.getRange(2, 4, sheet.getLastRow() - 1).getValues();
  for(var i=0; i<ids.length; i++){
      var event = calendar.getEventById(ids[i]);
      event.deleteEvent();
  }
}

やってみよう

初回実行時はGoogleカレンダーへアクセス許可が求められるので、覚悟を決めたらOKしてください。
1. getCalendarEvents() を実行する
2. うまくいくと以下のキャプチャのように予定が取れます
3. 消したくない行を削除します
4. deleteCalendarEvents() を実行して、待ちます。
5. みるみるうちに(意外と遅いペースで)予定の件数が減っていきます。
6. 実行が終わったらおしまいです。

↓ステップ2がうまくいったよ
無題のスプレッドシート_-_Google_スプレッドシート.png

最後に

どうでしょう。この記事を書き始めるときに残り2000件だったカレンダーのイベントが、もう500件になろうかとしています!

Don't be afraid of mistakes!
(久しぶりにコード書いて楽しかったです。弊社の愛すべき開発チームがQiita LGTMを集めているので貢献します)

追記

Rate limited! しきい値は15分以内に2500件てところかな。
大量すぎる場合は何回かに分けて実施しましょう。
image.png

今回はDelete結果をロギングしてないので、リジュームする場合は、一回スプシを空っぽにしてGetからやり直すのが良いと思います。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3