3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Google Apps Script で Calendar を扱うときの書き方

Posted at

trigger となる event source を From Calendar にしたときの引数

(言語設定を変えるの面倒なので、 event source とか From Calendar の日本語名が分かる人教えてください)

例として、実行される function を

function doFromCalendarUpdated(args) {
}

のようにしてみる。

trigger の設定画面で、こうやって

  • Choose which function to run: (前述の) doFromCalendarUpdated
  • Select event source: From calendar
  • (ちなみに Calendar owner email には、 calendar id を入れればよい。)
スクリーンショット 2019-06-09 14.32.06.png

このとき args には、

{"calendarId": "xxxx", "authMode": "FULL", "triggerUid": "xxxx"}

が入っている。 CalendarId は分かるが、なんの変更があったかは分からないっぽい。

Permission

Script が所属するプロジェクト1が Calendar のデータにアクセスすることを許可しないといけない。

設定していない場合、

The script does not have permission to perform that action.
Required permissions: (https://www.googleapis.com/auth/calendar || https://www.googleapis.com/auth/calendar.readonly || https://www.google.com/calendar/feeds)

というエラーが出る。 Trigger で実行する前にテストで実行したりして許可しないといけない

カレンダーのイベントを検索

過去24時間のイベントを検索するコード例

function doFromCalendarUpdated(args) {
  if (!args || !args.calendarId) {
    Logger.log("No arguments");
    return;
  }
  handleCalendar(args.calendarId);
}

var handleCalendar = function(calendarId) {
  var calendar = CalendarApp.getCalendarById(calendarId);
  var endTime = new Date();
  var startTime = new Date(endTime.getTime() - 24 * 60 * 60 * 1000);
    
  var events = calendar.getEvents(startTime, endTime);

  var event;  
  for (var i = 0, l = events.length; i < l; i++) {
    event = events[i];

    // この event の使い方は
    // https://developers.google.com/apps-script/reference/calendar/calendar-event
    // を参照

    // たとえばイベント名をログ出力するには
    Logger.log(event.getTitle());
  }
}

テストするには

function testHandleCalendar() {
  var email = Session.getActiveUser().getEmail();

  handleCalendar(email);
}

とかやればいいはず

  1. script を作れば勝手にプロジェクトが作られてると考えても差し支えないと思います。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?